在具有Integrated Security = False的客户端计算机上将SQL Compact替换为SQL LocalDB

时间:2015-11-18 04:31:43

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

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

使用" Integrated Security = True"替换在客户端计算机上工作正常但是一旦我设置了#34; Integrated Security = False"然后我得到

  

用户' 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服务器的本地实例,其中登录存储在master数据库和客户机master数据库与LocalDB内的登录不匹配。

在我看来,微软会通过打开集成安全性来放弃LocalDB中的安全问题,这似乎是荒谬的。 任何人都可以找到数据库,将其复制到他们的计算机上,然后使用SQL工具来读取数据库,而无需知道用户名/密码。

1 个答案:

答案 0 :(得分:1)

根据MSDN Documentation

  

使用LocalDB或时,必须使用集成安全性   AttachDBFileName选项。