gpt4 book ai didi

sql - 使用 DACPAC 创建的用户无法登录

转载 作者:行者123 更新时间:2023-12-04 00:34:26 28 4
gpt4 key购买 nike

我有一个 Visual Studio 2013 SQL 数据库项目,它创建了一个 DACPAC 文件,用于使用 SQL Server Management Studio (SSMS) 中的“部署数据层应用程序...”选项将 SQL 数据库部署到 SQL Server。

作为项目的一部分,有一个Security 文件夹,其中包含一个创建所需用户的 SQL 脚本。脚本是:

CREATE LOGIN [MyLogin]
WITH PASSWORD = N'MyPassword',
DEFAULT_DATABASE = [MyDatabase],
DEFAULT_LANGUAGE = [us_english],
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF
GO

CREATE USER [MyLogin] FOR LOGIN [MyLogin] WITH DEFAULT_SCHEMA=[dbo];
GO

exec sp_addrolemember 'db_datareader', N'MyLogin'
GO

GRANT EXECUTE ON OBJECT::[dbo].[MyObject1] TO [MyLogin];
GO

GRANT EXECUTE ON OBJECT::[dbo].[MyObject2] TO [MyLogin];
GO

GRANT EXECUTE ON OBJECT::[dbo].[MyObject3] TO [MyLogin];
GO

将 DACPAC 发布到 SQL Server 时,使用数据库的应用程序无法登录。查看 SSMS 中的用户属性显示数据库用户与 SQL Server 登录主体之间没有关联,这可能会阻止应用程序登录。

但是,在 SSMS 中手动逐字运行上述脚本会正确创建用户,应用程序可以成功登录。

为什么 DACPAC 创建的用户没有正确设置数据库映射,以及需要在脚本和/或 DACPAC 属性中完成哪些操作才能使一切按预期工作。

谢谢,马丁

最佳答案

所以最终我在同事的帮助下弄清了这个问题,缺少的部分是 CREATE USER ... 语句之后的以下两行:

GRANT CONNECT TO [MyLogin];
GO

现在 DACPAC 正确部署了 SQL 数据库,应用程序可以使用创建的 MyLogin 用户连接到数据库。

关于sql - 使用 DACPAC 创建的用户无法登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com