SSDT与分布式数据库场景

时间:2016-04-11 13:29:49

标签: sql-server visual-studio sql-server-data-tools

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

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

  

错误:SQL71561:查看:[dbo]。[Sample]有一个未解析的对象引用[$(SAMPLESERVER_1)]。[$(SampleDB)]。[dbo]。[T_Sample]。

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

您能否指出我可能的解决方案或SSDT不适用于分布式环境。

1 个答案:

答案 0 :(得分:1)

BWA,哈,哈。 SSDT和链接服务器......欢迎! :)公平地说,当你知道该怎么做时,没有什么比这更复杂的了,但是当你刚开始特别是如果你试图将现有的数据库移动到SSDT项目时,这是一个很大的痛苦。必须在SSDT开始页面中描述IMHO链接服务器,以节省开发人员的工作时间......

好的,现在回到问题:

  1. 创建链接数据库dacpac;

    • 您可以从Management Studio执行此操作:RClick on db,Tasks - >提取数据层应用程序。 (如果因为依赖而失败(并且很可能会失败))那么

    • 找到“SqlPackage.exe”的位置(取决于SQL Server的版本)并运行:“C:\ Program Files(x86)\ Microsoft SQL Server \ 120 \ DAC \ bin \” SqlPackage.exe / Action:Extract / SourceDatabaseName:“DBNAME”/SourceServerName:server.url.com /TargetFile:"F:\FILENAME.dacpac“/ SourcePassword:SecretPass / SourceUser:YourUser

  2. 将此dacpac添加为数据库引用 Make sure you select Different Database and Server
  3. 可选:为每个链接对象创建同义词
  4. 使用此新对象:[$(DbServer)]。[$(DbName)]。[dbo]。[T_Sample]
  5. 就是这样。总之,我想补充一点,SSDT是一个很好的工具,但第一印象可能非常糟糕......