有人知道如何更新“ Server =(localdb)\ MSSQLLocalDB; Database = SampleDB”以要求输入密码,以便通过连接字符串将其传递给我吗?我正在使用.NET核心和Visual Studio C#,构建一个使用localdb的简单应用,该应用当前仅在连接字符串中使用“ Trusted_Connection = True”。
我想更新数据库以要求可以通过连接字符串传递的密码。
答案 0 :(得分:1)
首先,您需要检查在此SQL Server实例中是否启用了混合模式身份验证。为此,请运行Management Studio并连接到服务器。在对象资源管理器中的服务器上单击鼠标右键,然后单击“属性”。从显示的对话框中,转到“安全性”,并确保已选择“ SQL Server和Windows身份验证模式”:
您需要此模式才能使用用户名和密码进行身份验证。也可以使用T-SQL脚本启用它:
ALTER LOGIN sa ENABLE;
GO
ALTER LOGIN sa WITH PASSWORD = '<enterStrongPasswordHere>';
GO
这时(并最终重新启动实例),您应该能够在连接字符串中使用sa登录名和密码。但是,不建议这样做。为您的应用程序创建专用登录名(而不是sa)会更好。您可以从“对象安全性” \“登录名”部分中的脚本或使用脚本进行此操作:
USE [master]
GO
CREATE LOGIN [my_login] WITH PASSWORD=N'<enterStrongPasswordHere>', DEFAULT_DATABASE=[YourDatabaseName], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
然后,您需要在数据库中为此登录创建一个用户(登录是服务器级别的对象,用户在数据库中)。运行此脚本:
USE [YourDatabaseName]
GO
CREATE USER [my_login] FOR LOGIN [my_login]
GO
ALTER ROLE [db_owner] ADD MEMBER [my_login]
GO
这将使您的登录名具有数据库的全部权限。您可能只想授予它较少的权限,但是我不知道您实际需要什么。我建议您阅读this文章,以了解操作方法和方法。
完成所有操作后,可以使用如下连接字符串:
Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DataBaseName;User id=my_login;Password=<enterStrongPasswordHere>;