SSDT 与分布式数据库场景

SSDT with distributed database scenario

目前我们已经开始使用 SQL 服务器数据库项目开发 SQL 服务器数据库。将来这个数据库应该分布到 N 个不同的 SQL 服务器实例中。每个实例都应该有一个指向其他实例的链接服务器引用,每个数据库实例应该有引用该数据库其他实例的分布式分区视图。

出于测试目的,我创建了 2 个不同的项目,每个项目都包含链接服务器引用和分区视图的副本...但是第一个项目因错误而无法编译

Error: SQL71561: View: [dbo].[Sample] has an unresolved reference to object [$(SAMPLESERVER_1)].[$(SampleDB)].[dbo].[T_Sample].

我阅读了有关数据库引用的内容,但我认为由于循环引用问题我无法使用它。

你能指出一个可能的解决方案吗?SSDT 不适用于分布式环境。

哇哈哈。 SSDT 和链接服务器……欢迎! :) 公平地说,当您知道该做什么时,没有什么复杂的,但是当您刚开始时,尤其是当您尝试将现有数据库移动到 SSDT 项目时,这会是一个很大的痛苦。恕我直言,链接服务器必须在 SSDT 起始页中进行描述,以节省开发人员的时间...

OK,现在回到问题:

  1. 创建链接数据库dacpac;

    • 您可以从 Management Studio 执行此操作:R单击数据库,任务 -> 提取数据层应用程序。 (如果由于依赖关系而失败(并且很可能会失败)) then

    • 查找"SqlPackage.exe"(取决于SQL服务器的版本)文件和运行的位置:"C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin\"SqlPackage.exe /Action:Extract /SourceDatabaseName:"DBNAME" /SourceServerName:server.url.com /TargetFile:"F:\FILENAME.dacpac" /SourcePassword:SecretPass /SourceUser:YourUser

  2. 添加此 dacpac 作为数据库参考
  3. 可选:为每个链接对象创建同义词
  4. 通过使用此新对象:[$(DbServer)].[$(DbName)].[dbo].[T_Sample]

就是这样。总之,我想补充一点,SSDT 是一个很棒的工具,但是第一印象可能非常糟糕......