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工具来读取数据库,而无需知道用户名/密码。