Sql server 用户X的sql登录失败…仅限windows身份验证

Sql server 用户X的sql登录失败…仅限windows身份验证,sql-server,Sql Server,大家好,sql和c#交互有问题。我在安装程序中通过脚本创建DB和登录,然后实际的客户端程序应该登录,但是每次我运行客户端程序时,它都会爆炸,我在日志文件中得到这个错误。(顺便说一句:客户端程序在另一台机器上的现有数据库上工作。) 用户“user”的sql登录失败。原因:尝试使用SQL身份验证登录失败。服务器仅配置为Windows身份验证。[客户:] 错误18456,严重性:14状态:58 这些是用于创建登录/用户的命令 CREATE LOGIN [user] WITH PASSWORD='pas

大家好,sql和c#交互有问题。我在安装程序中通过脚本创建DB和登录,然后实际的客户端程序应该登录,但是每次我运行客户端程序时,它都会爆炸,我在日志文件中得到这个错误。(顺便说一句:客户端程序在另一台机器上的现有数据库上工作。)

用户“user”的sql登录失败。原因:尝试使用SQL身份验证登录失败。服务器仅配置为Windows身份验证。[客户:] 错误18456,严重性:14状态:58

这些是用于创建登录/用户的命令

CREATE LOGIN [user] WITH PASSWORD='pass', DEFAULT_DATABASE=[data], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
EXEC sys.sp_addsrvrolemember @loginame = N'user', @rolename = N'sysadmin'
EXEC sys.sp_addsrvrolemember @loginame = N'user', @rolename = N'serveradmin'
USE [data] CREATE USER [user] FOR LOGIN [user] WITH DEFAULT_SCHEMA=[dbo]
我错过了什么?

谢谢你的帮助

您的SQL Server实例设置为仅支持Windows身份验证。您的创建用户脚本正在尝试创建SQL用户帐户,该操作失败,因为数据库实例仅支持Windows身份验证

要使数据库支持create user语句,请打开SSMS。右键单击服务器,然后单击属性。转到“安全”选项卡,将服务器身份验证从Windows身份验证模式更改为SQL Server和Windows身份验证模式


完成后,您的脚本应该可以正常工作。

您是否尝试过在用户之前添加域?示例:
myDomain\user
实际上,创建它时不会失败,尝试使用它登录时会失败。服务器属性的更改起了作用,但是脚本将如何实现这一点呢。我不希望仅仅为了完成这一任务就在我们所有的客户机上安装SSM。从Windows到混合模式的安全性变化是一次性的。由于只做了一次,您不必担心在所有客户机上安装SSM。据我所知,这是在安装SQL Server时必须指定的内容,或者是可以在SSMS中覆盖的内容,有关详细信息,请参阅我正在使用的程序使用microsoft的集成发布服务,它可以一键安装我的先决条件。其中之一是SQL Server 2008 express edition。它只要求我在安装DB服务器时同意EULA。那么,我的选择是否仅限于安装SSMS或手动安装MSSQL'08 express以将其更改为sql server和windows身份验证模式。。。或者我只是在注册表中找到了一种方法。。。确实希望编写查询来执行此操作…您是否可以使用Microsoft Integrated Publishing Services进行控制?如果它通过命令行脚本安装SQL Server,那么如果您可以更改命令行脚本,则SQL Server安装中有一个名为/SECURITYMODE的参数,允许您为数据库指定混合模式,请参阅。我怀疑SQL Server Express支持相同的选项。注意:我绞尽脑汁想弄清楚为什么在我将安全设置更改为允许
SQL Server和Windows身份验证后,它仍然无法登录并报告到事件日志SQL Server未设置为允许SQL身份验证。重新启动SSMS对我来说是不够的。我必须重新启动SQL Server实例服务(同时重新启动SQL代理)。然后它完美地工作了。