标签: database-projects

导入为 VS DB 项目后出现“未解析的用户引用”

我刚刚将现有的 SQL Server 2008r2 生产数据库导入到 VS 2013 数据库项目中。

我现在遇到了一些错误

Error       SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser].
Run Code Online (Sandbox Code Playgroud)

我真的不需要我的 VS DB 项目来管理用户,但我担心如果它们不存在,它会在部署时尝试删除它们。

文件本身生成为

CREATE USER [mydbuser] FOR LOGIN [mydbuser];
Run Code Online (Sandbox Code Playgroud)

或者

CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser];
Run Code Online (Sandbox Code Playgroud)

错误标记显示它专门用于Login。由于这是一个系统级对象,我可以理解它超出了 db 项目的范围。

我是否更喜欢将它们全部更改为

CREATE USER [mydbuser] WITHOUT LOGIN;
Run Code Online (Sandbox Code Playgroud)

或将CREATE LOGIN子句添加到每个文件的开头?

删除登录引用似乎更简单,而完全删除用户将是最简单的。

我想确保我按照预期的方式使用该工具。将其中任何一个重新发布到生产环境中会不会有任何问题?通过项目添加用户/登录的正确程序是什么?

sql-server ssdt database-projects

12
推荐指数
3
解决办法
3万
查看次数

sqlproj 中的引用程序集未部署到服务器

我有一个Visual Studio 2013数据库项目这需要一个修改版本FASTJSON作为参考。我在参考属性中选择了 Generate DDL,如下图所示:

fastJSON 属性面板

在 .sqlproj msbuild 文件中:

<Reference Include="fastJSON">
  <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
  <GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>
Run Code Online (Sandbox Code Playgroud)

但是 bin/debug/Project.sql 不包含CREATE ASSEMBLY fastJSON . . .. 手动添加程序集工作,然后我的项目将部署和运行。我该怎么做才能让 Visual Studio 部署我的程序集?

sql-server sql-clr visual-studio-2013 database-projects

9
推荐指数
1
解决办法
6100
查看次数

具有工作链接服务器引用的 SSDT 项目收到 SQL71562 警告

我有一个包含两个数据库项目的 VS 2013 解决方案。

其中之一,我们称之为“worker”,应该部署到大约 10 个不同的生产服务器上。

另一个应该作为“控制器”实例工作,基本上应该在 10 台生产服务器上的“工作人员”数据库上运行不同的存储过程。

因此,为了实现这一点,我在“控制器”内编写了 10 个链接服务器对象的脚本,并调用“工作器”数据库中的不同 SP。

以下是链接服务器脚本的示例:

EXEC sp_addlinkedserver @server = N'PROD1', @srvproduct=N'SQLSERVER', @provider=N'SQLNCLI', @datasrc=N'1.2.3.4\prod1'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'PROD1',@useself=N'False',@locallogin=NULL,@rmtuser=N'aaaaa',@rmtpassword='aaaaa'
GO
EXEC sp_serveroption @server=N'PROD1', @optname=N'rpc', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'PROD1', @optname=N'rpc out', @optvalue=N'true'
GO
Run Code Online (Sandbox Code Playgroud)

到目前为止,效果很好,并且链接服务器是在控制器 SQL Server 上创建的,我可以使用它们。

但是:
在 SSDT 项目/解决方案中,每当我使用链接服务器对象时,我都会收到损坏的引用。当然,模式不知道链接服务器名称,因为它们仅位于上述脚本中的字符串常量中。

示例:(我自己翻译的信息,不保证完全正确)

警告 14 SQL71562:“过程:[dbo].[SP1]”包含对对象 [PROD1].[db1].[dbo].[SP1] 的未解析引用”。

所以我的问题是,我有从控制器数据库模式到“worker”数据库模式的引用,但我无法使用/插入数据库引用,因为我使用多个不同的引用(10 个生产服务器)来“访问”工作人员的架构...我不想使用“OtherServer”选项向我的项目添加 10 个数据库引用(即使可以,我猜它也不允许向同一数据库项目添加 10 个引用。 ..)

我有一种感觉,应该可以在解决方案中以正确的方式处理链接服务器对象,但我不知道如何解决。

我尝试了亚伦的同义词建议,但是一旦我使用链接服务器的名称,就会遇到同样的问题,导致名称“后面”出现未知对象。

我编辑了问题以使问题更加清晰,并希望任何人都有想法,因为我想要一个干净的解决方案,没有数百条警告消息。

visual-studio sql-server-2008-r2 linked-server ssdt database-projects

5
推荐指数
1
解决办法
6844
查看次数

SQLPackage重置数据库恢复模型

我将 SQLPackage.exe 与数据库发布配置文件结合使用,将数据库更改部署到 DEV 和 QC 实例。我的数据库处于简单恢复模式。但是当我使用 SQLPackage 部署更改时,它将它们恢复为完全恢复模式。

这就是我正在使用的,

"C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /Action:Publish /SourceFile:"FILE PATH TO .DACPAC" /Profile:"PUBLISH PROFILE.XML"

如果我使用 Visual Studio 使用相同的发布项目来部署项目更改,则会发生同样的情况。

我在这里缺少什么?据我所知,Profile 中没有这样的标志。这是 SQLPackage 的预期行为吗?

sql-server visual-studio deployment ssdt database-projects

5
推荐指数
1
解决办法
1749
查看次数