c# - 在 Integrated Security = False 的客户端机器上用 SQL LocalDB 替换 SQL Compact

标签 c# sql-server localdb sql-server-2012-localdb

Microsoft 已弃用 SQL Compact,因此我想在客户端计算机上将其替换为 SQL LocalDB。

当使用“Integrated Security = True”时,替换在客户端机器上工作正常,但是一旦我设置“Integrated Security = False”,我就会得到

Login failed for user 'TestUser'

我无法在客户端上使用集成安全性。
他们不应该在不知道用户名/密码的情况下访问数据库,用户名/密码已经在他们的 machine.config 中加密。

我在 VS 中创建了一个登录名,如下所示:

CREATE LOGIN TestUser WITH PASSWORD = 'asdfsdfasdf';
GO
CREATE USER TestUser FOR LOGIN TestUser WITH DEFAULT_SCHEMA = [dbo];
GO 
exec sp_addrolemember 'db_owner', 'TestUser'
GO

连接字符串类似这样:

<add name=" ConnectionStringName" 
    connectionString="Data Source=(LocalDB)\v11.0;
        AttachDbFilename=|DataDirectory|\TEST.mdf; 
        Integrated Security=False; User Id=TestUser;
        Password=asdfsdfasdf"
    providerName="System.Data.SqlClient" />

我已经在 MSDN 论坛上发布了一个类似的问题,但没有收到很好的回复。
另外,好像stackoverflow上也有类似的问题,但是没有很好的回复。
LocalDB and Entity Framework 6 - Security
LocalDB connection with Integrated security=False

我有一种感觉,我已经知道了答案,因为 LocalDB 无法在其他关闭了集成安全性的计算机上工作,因为理论上它使用的是 SQL Server 的本地实例,其中登录信息存储在 master 数据库中并且客户端主数据库与 LocalDB 内的登录名不匹配。

在我看来,微软通过启用集成安全来放弃 LocalDB 中的安全问题似乎很可笑。
任何人都可以找到数据库,将其复制到他们的计算机上,然后使用 SQL 工具读取数据库,甚至不知道用户名/密码。

最佳答案

根据MSDN Documentation :

You have to use integrated security when you use LocalDB or the AttachDBFileName option.

关于c# - 在 Integrated Security = False 的客户端机器上用 SQL LocalDB 替换 SQL Compact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771885/

相关文章:

c# - 我如何控制对象如何被哈希集哈希

c# - 如何在 C# 中将 nchar 转换为字符串?

sql-server - ALTER DATABASE AUDIT 产生语法错误

c# - 使用本地 Db 构建 C# WinForms 应用程序

sql-server - 如何指定我的应用程序应使用跟踪标志参数启动 SQL Server LocalDb?

c# - 创建具有定义的文件大小的 SQL Server 数据库

c# - 如何让 Web Api 将 Json.net 序列化字符串对象正确发送回客户端?

c# - 使用 DateTime.TryParse 方法检查有效日期

sql - SQL Server 中的聚合函数

sql - 显示列值的逗号