Visual studio 2010 为Visual Studio 2010数据库项目中的服务器对象编写脚本

Visual studio 2010 为Visual Studio 2010数据库项目中的服务器对象编写脚本,visual-studio-2010,deployment,datadude,Visual Studio 2010,Deployment,Datadude,部署前脚本(script.PreDeployment.sql)是放置创建服务器级对象的sql命令(在我的例子中特别是登录)的最佳位置吗 我需要为项目中的数据库用户创建服务器登录,而这似乎是唯一一个模糊的逻辑位置,因为项目结构中的所有其他内容(通过反转dev db创建)都是特定于数据库的。因此,我只想检查其他人在使用VisualStudio数据库项目时将其服务器级命令存储在何处 非常感谢。在部署数据库之前需要的任何东西都将在该脚本中 在本例中,我们在部署后脚本中添加登录名。部署数据库时不需要它们,

部署前脚本(script.PreDeployment.sql)是放置创建服务器级对象的sql命令(在我的例子中特别是登录)的最佳位置吗

我需要为项目中的数据库用户创建服务器登录,而这似乎是唯一一个模糊的逻辑位置,因为项目结构中的所有其他内容(通过反转dev db创建)都是特定于数据库的。因此,我只想检查其他人在使用VisualStudio数据库项目时将其服务器级命令存储在何处


非常感谢。

在部署数据库之前需要的任何东西都将在该脚本中

在本例中,我们在部署后脚本中添加登录名。部署数据库时不需要它们,我们决定将所有与安全相关的命令放在同一个位置

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE LOGIN [$(DefaultLogin)] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE USER [$(DefaultLogin)] FOR LOGIN [$(DefaultLogin)] WITH DEFAULT_SCHEMA=[dbo]
        -- The db_owner role is added to the current database.
        EXEC sp_addrolemember N'db_owner', N'$(DefaultLogin)'
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END

是部署前和部署后参考。

部署数据库之前需要的任何内容都将在该脚本中

在本例中,我们在部署后脚本中添加登录名。部署数据库时不需要它们,我们决定将所有与安全相关的命令放在同一个位置

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE LOGIN [$(DefaultLogin)] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE USER [$(DefaultLogin)] FOR LOGIN [$(DefaultLogin)] WITH DEFAULT_SCHEMA=[dbo]
        -- The db_owner role is added to the current database.
        EXEC sp_addrolemember N'db_owner', N'$(DefaultLogin)'
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END

是部署前和部署后的参考。

谢谢。似乎和我们这里的想法非常相似。此后,我发现了数据库服务器VS项目模板,它为混合部署添加了另一个选项。不过现在,考虑到我们数据库的规模,我坚持我们现有的,所以我将接受你的回答。谢谢。似乎和我们这里的想法非常相似。此后,我发现了数据库服务器VS项目模板,它为混合部署添加了另一个选项。但是现在,考虑到我们数据库的规模,我坚持我们现有的,所以我会接受你的答案。