我正在做一些自动化,并在将一些10-15个旧的,古怪的脚本重写为一个单一且简单的单元,它可以:
我这样做使用Microsoft.SqlServer.Dac我可以导出/导入dac包.
它工作得很好:),但在完成所有我的TDD和测试之后,现在是真实的时间了,结果我完全错过了我的工作中有2个域.
这意味着当我在开发环境中导入dacpac时出现错误,因为我们的2个域没有完全双向信任,当然数据库也有来自两个域的用户.特别是生产域用户.我可以看到3个可行的解决方案
我已经阅读了文档(当然这是模糊的),试图找到一组可以实现2)或3)的选项.我已经测试了很多组合,但没有一个可以工作.dac pac导入不断尝试创建用户并失败,因为生成用户无法在开发环境中进行验证.
我正在使用Deploy和Extract导出/导入.可以在这里找到不同的选项:
没有组合我找到了作品,我甚至阅读过帖子,暗示它是DacPac中的一个错误.但我不确定.我现在正在研究的最后一个选项是使用GenerateScript方法,希望能够强制排除用户/登录,但我担心它也无法正常工作.见(http://technet.microsoft.com/en-us/library/hh753526.aspx).
问题: 如何在导出或导入中从我的dacpac中排除用户/登录?
UPDATE
当前提取设置:
IgnoreUserLoginMappings = true,
VerifyExtraction = false,
Run Code Online (Sandbox Code Playgroud)
当前部署设置:
CreateNewDatabase = true,
DeployDatabaseInSingleUserMode = true,
DisableAndReenableDdlTriggers = true,
IgnoreUserSettingsObjects = true,
Run Code Online (Sandbox Code Playgroud)
更新
到目前为止,一切都指向一个丑陋的解决方
I can generate a deploy script using DacServices.
Then i can parse the script (Remove logins etc).
Then write the result to a file.
And then call SQLCMD in …Run Code Online (Sandbox Code Playgroud) 我们正在使用带有SSDT的Visual Studio 2013主要用于版本化t-sql代码,因此sql正在开发服务器上开发,然后我们使用模式比较将脚本传输到visual studio(并检查Git).在部署之前(我们目前也使用模式比较)我们必须替换数据库和服务器引用(使用[$(数据库)]等).如果我们更改开发服务器中的代码并再次进行比较,则此类SQLCMD变量将再次丢失.(我希望模式比较足够聪明以保留SQLCMD变量,但我发现无法实现这一点).
合乎逻辑的步骤是从一开始就在visual studio中开发sql.但到目前为止,很难说服团队中的任何人这样做.一个人可以编写sql并在VS中执行它,没问题.也可以切换到SQLCMD模式并执行.但是当您在VS中创建例如一个视图时,您必须写下一个create语句,当然这可以执行一次,但在更改视图并再次执行create语句时会产生错误.
所以我的问题是,是否有人提供了一些关于如何在Visual Studio中进行数据库开发的基本技巧.我们能够获得数据库引用和所有这些,但不是开发过程.