我有 Windows Server 2012 R2,我想用它.sqlproj在 CI 管道中从 SSDT 构建项目。这是我到目前为止所做的:
Microsoft.Data.Tools.Msbuild当我构建我的解决方案时
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe database.solution.sln /p:tv=14 /p:SSDTPath=D:\Nuget\Microsoft.Data.Tools.Msbuild\lib\net40 /p:SQLDBExtensionsRefPath=D:\Nuget\Microsoft.Data.Tools.Msbuild\lib\net40 /p:Configuration=Debug
我收到一条错误消息Could not load file or assembly 'Microsoft.Build.Utilities.Core
我错过了什么想法吗?目标是让构建服务器尽可能轻,因此不想在其上安装 Visual Studio 或 SSDT。
以下是 MsBuild 的完整输出:
Microsoft (R) Build Engine version 4.6.1586.0
[Microsoft .NET Framework, version 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 18/01/2017 17:00:19.
Project "D:\Jenkins\workspace\hcg\database.solution\database.solution.sln" …Run Code Online (Sandbox Code Playgroud) 我创建了一个 SSIS 包,将多行导出到 Excel,通常少于 200 行(包括标题)。当我在 VS2015 调试中运行它时,一切都变成绿色。
我什至像这个问题所说的那样等待。
尽管如此,除了标头之外,没有任何内容到达文件。
我知道数据不多,但我正在尝试将其自动化,因为数据最终会增长,而且我不想一直手动运行它。
有任何想法吗?我正在使用 SQL Server 2012 并使用 VS2015 编写了这个 SSIS 包。
如何为 SSDT 项目设置 Azure DevOps Pipeline?当我尝试 .NET Core 的内置模板时,收到以下错误消息:
2018-11-29T19:04:33.6287133ZD:\ a \ 1 \ s \ XXX \ XXXDB.sqlproj:警告NU1503:跳过项目“D:\ a \ 1 \ s \ XXX \ XXXDB.sqlproj”的恢复。项目文件可能无效或缺少恢复所需的目标。[D:\a\1\s\Krystal.sln]
2018-11-29T19:05:36.8178997ZD:\ a \ 1 \ s \ XXXDB \ XXXDB.sqlproj(60,3):错误MSB4019:导入的项目“C:\ Program Files \ dotnet \ sdk \ 2.1.402 \ Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets”未找到。确认声明中的路径正确,并且该文件存在于磁盘上。
我有一个旧项目,它使用WCF来为SQL Server提供C#CLR触发器.我总是通过运行脚本来安装它.
但是我决定转到VS 2012上的SSDT项目.我从空数据库导入了项目.WCF功能取决于.net框架中的几个程序集
SMdiagnostics
System.Web
System.Messaging
system.identitymodel
system.identitymodel.selectors
microsoft.transactions.bridge
System.ServiceModel
Run Code Online (Sandbox Code Playgroud)
所以我在项目中引用了这些dll.我还将它们添加到Assemblies子文件夹下的项目中.
但是,当我创建部署脚本时,这些程序集不在其中.
所以当我尝试将脚本发布到数据库时,我收到一个错误.
程序集'system.servicemodel,version = 3.0.0.0,culture = neutral,publickeytoken = b77a5c561934e089.' 在SQL目录中找不到.
如果我尝试创建自定义脚本以将程序集添加到db:
create assembly [SMdiagnostics]
from 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll'
with permission_set = unsafe
go
Run Code Online (Sandbox Code Playgroud)
我收到错误
错误:SQL70502:程序集源无效.只允许二进制文字.
如何从.NET添加程序集以与我的SSDT项目一起部署?
谢谢.
deployment wcf .net-assembly visual-studio-2012 sql-server-data-tools
希望其他人遇到过此问题,因为Google只返回9个错误结果!有关SqlPackage的信息似乎还有点不足.
我们目前正在进行迁移到持续部署环境的过程.作为其中一部分,我们使用数据库项目来存储数据库模式,构建服务器使用SqlPackage.exe通过比较每个项目的.dacpac文件与服务器上托管的关联模式模板数据库来生成升级脚本.
到目前为止,我们有六个数据库(还有更多),除了一个之外它们都工作正常,当SqlPackage为'target'数据库建模时会抛出以下错误:
错误SQL72018:无法导入触发器,但源中存在一个或多个这些对象.
我们唯一能想到的是目标数据库的大小问题; 也许SqlPackage内存不足?它是我们拥有的最大的数据库模式,所以它当然是可行的.如果它是SqlPackage的内存限制,我们如何增加它?
我们将开始从目标数据库和源项目中删除对象,以查看我们是否可以确定它是否符合规模或特定架构对象,但同时我们将非常感谢任何想法和建议!
更新
我刚刚尝试从目标数据库中删除所有触发器,现在它将没有错误地吐出升级脚本.接下来我将尝试仅删除其中的一半,看看我是否可以将其缩小到一个特定的触发器.我怀疑它可能只是模式的大小,这可以追溯到SqlPackage内存问题.
使用带有SSDT的msbuild,我尝试过IncludeTransactionalScripts,但它似乎只将每个语句放在一个单独的事务中.是否可以将多个数据库项目作为事务发布?如果没有,我是否至少可以确保每个项目都在交易中发布?
我添加了一个新的存储过程并将其添加到我的sqlproj文件中.但是当我生成脚本来发布我的数据库时,更改不会反映在生成的脚本中.
我遇到了与此处描述的看似完全相同的问题:模式比较脚本生成忽略了SSDT重构重命名.实质上,SQL Server数据工具的重构组件不用于架构比较/更新.例如,不删除表的名称,而是删除具有旧名称的表,并创建具有新名称的表.不幸的是,我没有看到这个问题的公认答案.我发现了一个类似的问题,似乎是MSDN上同一个人提出的问题; 请参阅:重构重命名脚本生成将忽略重构重命名.同样,它看起来不像是一个可接受的答案.我真的想弄清楚如何使这个功能工作.有没有人有想法?
refactoring-databases schema-compare sql-server-2012 visual-studio-2012 sql-server-data-tools
所以我一直在寻找sql server数据工具(ssdt)并看到一些信息表明它可以与Microsoft数据库项目持续集成,我只是想知道是否有人在实践中实际上是这样做的.
dacpac方法看起来非常吸引人,并且在第一次尝试时似乎可行但不确定.使用最新的ssdt查看visual Studio 2013.
谢谢!
我有一个Visual Studio SSDT项目,我用它来跟踪所有数据库更改,它都保持在源代码管理下.
从Visual Studio我可以将其部署到我的本地SQL Server以及我们的测试环境.但是出于安全原因,我无法远程连接到我们的生产SQL Server,但我可以将RDP连接到生产服务器.
确保将所有数据库更改部署到生产中的最佳方法是什么?
不确定它对这个问题有多大影响,但我使用的是VS 2015和SQL Server 2012.
sql-server ×5
dacpac ×2
deployment ×2
msbuild ×2
.net ×1
azure-devops ×1
database ×1
etl ×1
excel ×1
ssis ×1
wcf ×1