我一直在研究在测试和持续集成环境中使用 RedGate 的 SQL 工具和 Microsoft Visual Studio Team System Database Edition(以前称为 Data Dude)。
我们需要做的是:
什么解决方案最适合我们的需求以及人们对这两种产品的意见、看法和体验是什么。您选择/会选择哪个?为什么?有没有我错过的替代方案?
sql-server continuous-integration redgate datadude sql-server-data-tools
我有一个 VS2012 数据库项目,其中包括表、存储过程、视图等。
然后我有第二个数据库项目,其中包含对第一个项目的数据库引用。我已确保从“项目属性 -> 调试 -> 高级”菜单中选择“包括复合对象”选项。
当我构建第二个项目并获取生成的 DACPAC 文件并通过 SSMS2012 部署它时,它不会创建第一个项目的对象。
我错过了什么吗?为什么复合对象不包含在 DACPAC 中?
database-deployment visual-studio-2012 ssms-2012 dacpac sql-server-data-tools
我似乎在将架构部署到 Azure SQL 数据库(上周创建,兼容性 140)时遇到问题。
我们有一个 SSDT DACPAC 架构要部署到,它与 IaaS SQL Server 2016 实例完美配合,但是当将目标版本更改为 Azure SQL V12 并尝试通过 VSTS 部署到我们的 PaaS 数据库时,我收到此错误:
我们已尝试将 Compatbility MSBuild 值设置为 120,130,140 并将其留空 - 似乎没有任何区别。以下是 .sqlproj 文件的摘录:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Name>DataSchema</Name>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>4.1</ProjectVersion>
<ProjectGuid>{5d100d18-648c-4aac-9884-8a7b3c97f033}</ProjectGuid>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
<OutputType>Database</OutputType>
<RootPath>
</RootPath>
<RootNamespace>CustomerData</RootNamespace>
<AssemblyName>CustomerData</AssemblyName>
<ModelCollation>1033,CI</ModelCollation>
<DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>
<DeployToDatabase>True</DeployToDatabase>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetLanguage>CS</TargetLanguage>
<AppDesignerFolder>Properties</AppDesignerFolder>
<SqlServerVerification>False</SqlServerVerification>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseSet>True</TargetDatabaseSet>
<DefaultCollation>SQL_Latin1_General_CP1_CI_AS</DefaultCollation>
<DefaultFilegroup></DefaultFilegroup>
<TargetDatabase>Data</TargetDatabase>
<CompatibilityMode></CompatibilityMode>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
从 MSDN 教程看来,它应该像创建 SSDT DACPAC 项目一样简单,选择 SQL Azure …
安装 Sql Server Data Tools 后,我尝试SqlPackage.exe从以下位置使用:C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\
我想“提取”模式和数据。这样我就可以迁移到没有任何现有数据库的新服务器 - 我希望架构和数据包含在该迁移中。这只是一个旋转/一次性环境。
现有的数据库并不是很好,因为它们具有跨数据库引用。我要导出的数据库有多个对另一个名为“audit”的数据库的引用。涉及触发器 - 希望你能理解。
阅读文档后,我尝试了以下命令:
.\sqlpackage.exe /Action:Export /SourceDatabaseName:"MyDb" /SourceServerName:foo\bar /TargetFile:"C:\temp\mydb.bacpac"
Run Code Online (Sandbox Code Playgroud)
但是,这导致了以下许多错误:
Error SQL71562: Error validating element [dbo].[foo_u]: Trigge
r: [dbo].[foo_u] has an unresolved reference to object [Audit].[dbo].[Foo].[FooId]. External references are not supported when creating a package from this platform.
Run Code Online (Sandbox Code Playgroud)
我尝试指定,/p:VerifyExtraction=false但这导致:
.\sqlpackage : *** 'VerifyExtraction' is not a valid argument for the 'Export' action.
Run Code Online (Sandbox Code Playgroud)
所以现在我在想哇,这一定不能得到支持。但是在 VS2017 中,当我转到 SQL 服务器资源管理器时,我可以“提取数据层应用程序”并为所有表选择“提取架构和数据”选项。这运行良好并生成一个“foo.dacpac”文件 - 用户界面提供了一个“验证提取”选项,我没有选中它。
现在我倍感困惑,因为我认为 dacpac 文件只包含架构,而bacpac …
我正在尝试将 SSDT v15.6.0 安装到现有的 Visual Studio Team Explorer 2017 实例中。当我运行 SSDT 安装程序时,我可以从此现有 Visual Studio 实例列表中选择 Visual Studio Team Explorer 2017。如果我没有选择任何选项(所需的 SQL Server 数据库选项除外)。安装成功完成。
但是,如果我尝试选择任何/所有其他选项,安装将失败。从查看日志文件来看,VSIX 的安装似乎由于缺少所需的组件而失败。
下面是 SSDT-Setup 安装日志文件的片段,表明 VSIX 安装失败。
[167C:1A6C][2018-05-16T15:40:41]i301: Applying execute package: Microsoft.DataTools.IntegrationServices, action: Install, path: C:\ProgramData\Package Cache\9864EE5369359DB622D0234B6C6B7640B949140C\VSIXBootstrapper.exe, arguments: '"C:\ProgramData\Package Cache\9864EE5369359DB622D0234B6C6B7640B949140C\VSIXBootstrapper.exe" /q /admin /instanceIds:"68f392fc" /logFile:"C:\Users\golaat\AppData\Local\Temp\SsdtSetup\SSDT-Setup-ENU_20180516153141_009_Microsoft.DataTools.IntegrationServices.log" "payload\Microsoft.DataTools.IntegrationServices.vsix"'
[167C:1A6C][2018-05-16T15:41:13]e000: Error 0x80131500: Process returned error: 0x80131500
[167C:1A6C][2018-05-16T15:41:13]e000: Error 0x80131500: Failed to execute EXE package.
[1D80:1858][2018-05-16T15:41:13]e000: Error 0x80131500: Failed to configure per-machine EXE package.
Run Code Online (Sandbox Code Playgroud)
查看安装 VSIX 的日志文件,似乎缺少必需的组件:
5/16/2018 3:41:05 PM - BEGIN: …Run Code Online (Sandbox Code Playgroud) 我有一个 SQL Server 数据库项目 (VS2017),在项目属性中,SQLCMD 变量选项卡如下所示:
问题:我可以创建一个 SQLCMD 变量并为其设置一个默认值和一个本地值。有什么不同?
注意:我目前确实在我的项目中使用 SQLCMD 变量,所以我想我知道它们是如何工作的,但我无法理解这种区别。根据我可以找到的文档(突出显示是我的):
在 SQL Server 数据库项目中,您可以利用 SQLCMD 变量提供用于调试或发布的动态替换。您输入变量名称和值,在构建期间,这些值将被替换。如果没有本地值,将使用默认值。通过在项目属性中输入这些变量,它们将自动在发布中提供并存储在发布配置文件中。您可以通过加载值按钮将变量的项目值拉入发布。
所以看起来:
这对我有什么帮助?设置两个值似乎没有意义,那么为什么我们需要两个不同的值呢?
我创建的包是SSIS。第一次插入它工作正常。当我通过 SQL Server 代理作业运行包时,我在计划作业插入数据时插入了重复项。
我不知道如何停止插入多个重复记录。
我希望在通过 SQL Server 作业运行部署的包时删除重复项插入
我正在尝试构建一个数据库项目,我试图在我的 Visual Studio 2017 解决方案中创建一个系统版本表,但我突然收到一个错误:
SQL46010:] 附近的语法不正确
通常,这将是一个简单的修复......除了它所指的文件不存在!当我双击错误列表中的错误时,我得到:
找不到文件“MSSQL::dbo.TestHISTORY”
它所指的表是我命名为我创建的另一个表的 SYSTEM_VERSIONING = ON(减去 MSSQL:: 前缀)命令的一部分的表。我重新启动了 Visual Studio,恢复了我对数据库项目所做的所有更改,重新启动了我的电脑,对项目执行了清理操作,但都无济于事!
有没有其他人遇到过这个错误?
本质上,我遇到了与下面的问题相同的问题,只是接受的答案没有解决它。我在错误列表中既没有警告也没有错误:
查看 Visual Studio 中数据流 SSIS 元素的完整工具提示错误消息
与上面提到的问题类似,我可以在数据流设计图面上看到一条被截断的警告消息。
但是,在 Visual Studio 的错误列表视图中看不到相应的警告。
如何查看整个警告?
我已经从现有数据库创建了一个 SSDT 项目。它在 tablename.sql 文件中包含现有触发器。
CREATE TABLE [dbo].[TableName] (
[ID] INT NULL
)
GO
CREATE TRIGGER trgTableName ON dbo.TableName
FOR INSERT
AS
BEGIN
....
END
GO
DISABLE TRIGGER [dbo].[trgTableName] ON [dbo].[TableName]; /* My trigger is currently disabled */
GO
Run Code Online (Sandbox Code Playgroud)
但是,每当我修改触发器时,SSDT 都会再次启用它。它在部署时不考虑触发器禁用属性。
无论如何我可以让SSDT禁用触发器(如果它已经在数据库中被禁用)?
我正在考虑的方法之一是添加为部署后脚本。但是,最好为此使用现有的 SSDT 功能,而不是手动添加部署后脚本。
编辑:如果我们更新它们,SQL 服务器似乎会自动启用触发器。就我而言,触发器有更新,因此它启用了触发器。但是,SSDT 不会在更新后禁用它。
sql-server ×5
ssis ×2
azure ×1
dacpac ×1
datadude ×1
duplicates ×1
etl ×1
redgate ×1
ssms-2012 ×1