我将 SSIS 与 Visual Studio 2019 结合使用,在 SQL Server 2019 上创建和部署包。最初,当我的包在 SSDT 上运行时,我将其部署在 SSMS 集成服务器上,但没有输出。
因此,我在 Visual Studio 2019 中检查了:项目 -> 项目属性 -> 配置属性 -> 常规 -> 目标版本,其中设置为SQL Server 2022,所以我将其更改为SQL Server 2019。
当我尝试在 Visual Studio 2019 中再次运行该包时,出现以下错误:
Failed to load the package "Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Runtime.Wrapper.Sql2019.IDTSApplication160'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{037FE238-12C5-4313-AE13-9E116E90ACEA}' failed due to …
我使用Azure门户创建了一个数据库.然后我下载了为我创建的初始项目Azure,并在Visual Studio中打开它.我设置了登录设置,选择将其注册为数据层应用程序,并通过Block Publish选项选择SSDT数据库漂移检测.然后,在更新IP地址防火墙以接受我的IP地址进行远程数据库管理后,我成功将数据库发布到Azure.
从Azure门户本身,我添加了一个表,并定义了一些列和索引.我的问题是,如何将我在Azure门户中所做的更改传播回我在Visual Studio 2012中的初始项目?虽然我是一名经验丰富的C#开发人员,但我是Azure平台的新手.如果这很重要,我正在使用Visual Studio 2012 Ultimate.
我已经开始喜欢SSDT到SQL Management工作室了.但突然间,当我需要它时,我SQL Server Object Explorer在视图菜单中找不到.

不知道是谁拿走了它,我最近推出了visual-2的update-2.

我无法找到适用于VS-2013的独立版SSDT
任何人都可以保存我重新安装Visual Studio :-(
我想在我的 SSDT 项目中有条件地构建部署后脚本,但我不明白该怎么做。因此,通常会构建部署后脚本,但我想要一种在进行调试构建时不构建或运行部署后脚本的方法。我正在从命令行运行构建,因此我可以传入属性,但是如何使用属性来不运行部署后脚本?
我看到的选项是 SQLCMD,或编辑 SQLPROJ 文件,或传入属性,但我找不到任何关于 SQLPROJ 文件可用属性和不可用属性的参考。
我想要有条件构建的文件位于此处:
<ItemGroup>
<PostDeploy Include="PostDeploymentScripts\Script.PostDeployment1.sql" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我的调试构建块如下所示:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我的命令行如下所示:
msbuild $sqlprojFilePath /p:Configuration="Debug"
Run Code Online (Sandbox Code Playgroud) 遇到一个奇怪的问题。假设一个空解决方案中有两个数据库项目:Bart 和 Homer。巴特已被添加为荷马的数据库参考。
Bart项目定义了一个函数:
CREATE FUNCTION [dbo].[Message]()
RETURNS NVARCHAR(255)
AS
BEGIN
RETURN 'I am a value returned from another database'
END
Run Code Online (Sandbox Code Playgroud)
然后Homer项目定义了一个表:
CREATE TABLE [dbo].[Messages]
(
[Id] INT NOT NULL PRIMARY KEY
)
Run Code Online (Sandbox Code Playgroud)
和一个视图:
CREATE VIEW [dbo].[MessagesV]
AS SELECT Id, Bart.dbo.Message() AS [Message]
FROM dbo.Messages
Run Code Online (Sandbox Code Playgroud)
当尝试构建时,我收到以下错误:
Error 2 SQL71501: Computed Column: [dbo].[MessagesV].[Message]
contains an unresolved reference to an object. Either the object does
not exist or the reference is ambiguous because it could refer to any
of the following objects: …Run Code Online (Sandbox Code Playgroud) 我正在使用我自己的代码生成器来生成T-SQL代码,使用一些标准.我希望输出代码显示用于生成代码的标准,但我希望将该信息保留在部署到服务器上.
这是一个例子:
CREATE PROC blabla
AS
BEGIN
/*
This code is the result of calling code generator X with the following criterias:
Variable1 = 'My first variable value'
Variable2 = 'My second variable value'
*/
(Actual T-SQL code)
END
Run Code Online (Sandbox Code Playgroud)
基本上,我想知道SSDT中是否存在特殊语法来分隔不可编译的文本段.不在这里寻找纯粹的TSQL语法!
它存在吗?
另外需要注意:我知道我可以使用TSQL注释删除工具,但我在这里寻找更主动的解决方案.
在构建过程中,我们基于 SSDT .sqlproject 生成数据库的 dacpac 文件。此 dacpac 随后使用 sqlpackage 部署到生产环境。尽管使用 /p:DropStatisticsNotInSource=False 开关,sqlpackage 仍将删除 sqlproject 与生产数据库上次同步后添加的所有统计信息。
我们还可以使用发布配置文件和 SSDT 的生成脚本选项来重现此内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>hotel</TargetDatabaseName>
<DeployScriptFileName>Database.sql</DeployScriptFileName>
<TargetConnectionString>connectionstring</TargetConnectionString>
<BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
<DropObjectsNotInSource>True</DropObjectsNotInSource>
<DoNotDropDatabaseRoles>True</DoNotDropDatabaseRoles>
<DoNotDropDatabaseScopedCredentials>True</DoNotDropDatabaseScopedCredentials>
<DoNotDropUsers>True</DoNotDropUsers>
<DoNotDropServerRoles>True</DoNotDropServerRoles>
<DoNotDropSecurityPolicies>True</DoNotDropSecurityPolicies>
<DoNotDropSearchPropertyLists>True</DoNotDropSearchPropertyLists>
<DoNotDropPermissions>True</DoNotDropPermissions>
<DoNotDropPartitionSchemes>True</DoNotDropPartitionSchemes>
<DoNotDropPartitionFunctions>True</DoNotDropPartitionFunctions>
<DoNotDropExternalFileFormats>True</DoNotDropExternalFileFormats>
<DoNotDropExternalTables>True</DoNotDropExternalTables>
<DoNotDropErrorMessages>True</DoNotDropErrorMessages>
<DoNotDropDefaults>False</DoNotDropDefaults>
<ProfileVersionNumber>1</ProfileVersionNumber>
<DropStatisticsNotInSource>False</DropStatisticsNotInSource>
<ScriptRefreshModule>False</ScriptRefreshModule>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我们如何强制 sqlpackage 不删除统计信息?
我正在尝试在我们的 windows server 2016 服务器上设置 .sqlproj SSDT 项目的持续集成。
为了做到这一点,我在服务器上安装了 VS2017 和 SSDT 工具以获取所需的工具。我还安装了 MS 构建工具 2017。
我目前遇到的问题是关于安装的 ms 构建工具和 ssdt 的版本不匹配。
我用来运行构建的命令如下:
C:\\Windows\Microsoft.NET\\Framework64\\v4.0.30319\\MSBuild.exe /p:VisualStudioVersion=15.0 /property:MSBuildExtensionsPath="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\MSBuild\\" /property:VsInstallRoot="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\" DPAP-SQL-Slim.sln
传递的两个开关用于设置 .sqlproj 文件在通过 Visual Studio 运行时期望找到的两个环境参数。这样做是因为 MSBuild 默认不提供它们。
我目前得到的错误如下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(477,5): error MSB4062: The "SqlModelResolutionTask" task could not be loaded from the assembly C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\Common7\IDE\Extensions\Microsoft\SQLDB\Dac\140\Microsoft.Data.Tools.Schema.Tasks.Sql.dll. Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its …
.net sql sql-server sql-server-data-tools visual-studio-2017
我将使用 Visual Studio 2019 通过 SSDT-DACPAC 自动化数据库部署,将部署更改的数据库是 SQL SERVER 2019,对于部署介质,我在部署启动时使用 Azure 管道和任务“SQL Server 数据库部署”抛出一个错误
*** Could not deploy package.
Unable to connect to master or target server 'DB_NAME'. You must have a user with the same
password in master or target server 'DB_NAME'.
Run Code Online (Sandbox Code Playgroud)
虽然我已经双重验证了数据库的用户和密码,但相同的密码将我连接到 ssms
请查找日志
2020-07-22T06:51:57.3001061Z ##[debug]Evaluating condition for step: 'Deploy using : dacpac'
2020-07-22T06:51:57.3004812Z ##[debug]Evaluating: succeeded()
2020-07-22T06:51:57.3005875Z ##[debug]Evaluating succeeded:
2020-07-22T06:51:57.3008135Z ##[debug]=> True
2020-07-22T06:51:57.3009350Z ##[debug]Result: True
2020-07-22T06:51:57.3010674Z ##[section]Starting: Deploy using : dacpac
2020-07-22T06:51:57.3715291Z ==============================================================================
2020-07-22T06:51:57.3716242Z Task : SQL Server …Run Code Online (Sandbox Code Playgroud) dacpac sql-server-data-tools azure-devops sql-server-2019 ssdt-2019
sql-server ×3
dacpac ×2
msbuild ×2
sql ×2
.net ×1
azure ×1
azure-devops ×1
msbuild-task ×1
sqlpackage ×1
sqlproj ×1
ssdt-2019 ×1
ssis ×1
t-sql ×1