Microsoft已弃用SQL Compact,因此我想在客户机上使用SQL LocalDB进行替换。
当使用“Integrated Security = True”时,在客户机上进行替换可以正常工作,但一旦我设置为“Integrated Security = False”,那么就会出现如下错误:
Login failed for user 'TestUser'
我不能在客户机上使用集成安全性。
他们不应该能够访问数据库而无需知道用户名/密码,这些信息已经被加密存储在他们的machine.config文件中。
我像以下方式在Visual Studio中创建了一个登录:
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和Entity Framework 6-安全
Integrated security = false的LocalDB连接
我有一种感觉,本地数据库(LocalDB)不能在关闭集成安全的其他计算机上使用,因为理论上它正在使用SQL服务器的本地实例,其中登录存储在主数据库中,而客户端的主数据库将不匹配LocalDB中的登录。
在我看来,这似乎荒唐,因为Microsoft留下了集成安全性开启的LocalDB,放弃了安全问题。
任何人都可以找到数据库,将其复制到自己的计算机上,然后使用SQL工具读取数据库,甚至不需要知道用户名/密码。