标签: sqlpackage

如何使用sqlpackage.exe覆盖azure数据库上传(导入)

这应该是一件简单的事情,我想用覆盖选项上传/导入我的数据库,但我在文档中找不到它

我必须手动删除它并使用Import上传.

sqlpackage azure-sql-database

3
推荐指数
1
解决办法
1397
查看次数

sqlpackage.exe如何仅在存储过程上执行架构比较?

在VS 2012中,架构比较工具使用户可以通过选择选项“存储过程”作为应用程序作用域对象来仅比较“存储过程”。

有没有一种方法可以使用SqlPackage.exe仅在选定的架构对象上执行架构比较?

sqlpackage

2
推荐指数
1
解决办法
952
查看次数

SqlPackage - 如何阻止它关闭我的查询存储?

我在 Visual Studio 2017 中有一个数据库项目。我们的数据库项目的管理就像任何其他代码库一样,多个开发人员可以根据需要更新项目。为了减轻部署的痛苦,我在我们的 TFS 2018 (vNext) 构建过程中构建了一个自定义部署任务,它是一个调用 sqlPackage.exe 的 powershell 脚本。SqlPackage 将我们编译的数据库项目(*.dacpac 文件)与我们的目标数据库(在 Dev、QA 等中)进行比较。我配置了自定义步骤,以便它将预期的更改写入磁盘,以便我记录更改的内容,然后 sqlPackage 运行第二遍以将更改应用于预期的目标数据库。

我的 DBA 在我们的 SQL 2016 数据库中启用了查询存储。在我的 sqlPackage 部署期间,初始步骤之一是关闭查询存储,这让我的 DBA 不高兴。他希望能够比较部署前和部署后的更改,但如果查询存储被关闭,我们将丢失历史记录。

我已经尝试了文档中的几个开关 ( https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx#Publish%20Parameters,%20Properties,%20and%20SQLCMD% 20Variables ) 但我似乎找不到魔法参数。

如何阻止 SqlPackage 关闭查询存储?

我目前的脚本:

sqlPackage.exe /Action:Script /SourceFile: myPath\MyDatabaseName.dacpac" /OutputPath:"myPath\TheseAreMyChangesThatWillBeApplied.sql" /TargetConnectionString:"Integrated Security=true;server=MyServer;database=MyDatabase;" /p:DropObjectsNotInSource=false /p:DropPermissionsNotInSource=false /p:DropRoleMembersNotInSource=false /p:BlockOnPossibleDataLoss=True /Variables:"CrossDatabaseRefs=CrossDatabaseRefs
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?我很惊讶我必须编写一个自定义的 TFS 构建任务来做到这一点。这让我觉得我可能会以艰难的方式做这件事。(但在过去的几年里,这对我来说效果很好)。我喜欢数据库项目,我喜欢它们强制引用并确保我们在删除列时不会破坏其他对象(例如)。

任何见解将不胜感激。

t-sql deployment tfsbuild sqlpackage sql-server-2016

2
推荐指数
1
解决办法
940
查看次数

覆盖 SSDT 发布配置文件 ConnectionString

我使用以下命令来生成并使用 SSDT 发布数据库更改:

"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml
Run Code Online (Sandbox Code Playgroud)

我想提供数据库连接字符串作为参数,而不是使用publish.xml 中的硬编码连接字符串。无论如何我可以覆盖它吗?

我试过:

"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml /TargetConnectionString:$ConnectionString 
Run Code Online (Sandbox Code Playgroud)

其中 $ConnectionString 是来自 Jenkins 的参数。但是,它仍然使用publish.xml 中的ConnectionString。

sql-server continuous-integration jenkins sqlpackage sql-server-data-tools

2
推荐指数
1
解决办法
997
查看次数

使用 CLI 工具 (sqlpackage.exe / PS dbatools) 时,用户通过 BACPAC / DACPAC 导入数据库失败

目标

使用 PowerShell 脚本将 SQL 数据库克隆到不同的远程 SQL Server

什么有效

使用 SSMS 将 BACPAC 文件导入到不同的服务器(远程和本地),不会出现(报告的)警告或错误。

什么不可以

使用 sqlpackage.exe 和 PowerShell dbatools 将 BACPAC 导入远程 SQL Server 会导致以下错误:

Warning SQL72038: The object [XXX] already exists in database with a different definition and will not be altered.
Error SQL72014: .Net SqlClient Data Provider: Msg 15023, Level 16, State 1, Line 1 User, group, or role 'XXX' already exists in the current database.
Error SQL72045: Script execution error.  The executed script:
CREATE USER [XXX] …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell bacpac dacpac sqlpackage

2
推荐指数
1
解决办法
2437
查看次数

Sqlproj:在命令行中部署数据库的解决方案是什么?

我目前正在使用Microsoft Web部署技术(msbuild和msdeploy命令)将网站部署到服务器.该网站需要部署数据库,两者都在同一台服务器上.我正在寻找部署数据库项目(使用命令行)的最佳解决方案,我想更好地了解有关数据库部署的所有技术.

解决方案的内容(Visual Studio 2013):

  • 一个数据库项目(适用于SQL Server 2008),
  • 一个类库(带有NHibernate的数据访问层)
  • 一个Web项目(ASP.NET MVC4).

注意:我没有自愿使用VS中的持续集成/交付工具或发布方法.我这个项目的第一个目标是了解msbuild/msdeploy如何工作......

我看了一下vsdbcmd命令,它似乎做了我想要的所有步骤......除了我需要将Visual Studio DLLs /文件导入我的远程服务器,我想知道是否有更好的方法......我也看了在msdeploy提供程序dbSqlPackage/dbDacFx,但据我所知,它使用dacpac来应用架构更改.同样,SqlPackage.exe似乎也使用dacpac.

使用dacpac听起来不错,但我对以下问题感到困惑:

  • 这是否意味着我第一次创建数据库时需要一个不同的进程?如果是,哪个命令最好?
  • 是否可以从我的sqlproj文件创建一个dacpac?如果是的话,该怎么办?

是否有其他方法可以从命令行以及您的经验和项目进行部署,部署此类项目的最佳方式是什么?

非常感谢,

deployment msdeploy vsdbcmd sqlproj sqlpackage

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

在命令或可执行文件的输出的每一行之前添加时间戳

我想在命令的输出的每一行前面加上时间戳。例如:

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

会成为:

[2011-12-13 12:20:38] foo
[2011-12-13 12:21:32] bar
[2011-12-13 12:22:20] baz
Run Code Online (Sandbox Code Playgroud)

前缀时间是行的打印时间。如何使用PowerShell做到这一点?

powershell sqlpackage

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

SSDT/SqlPackage 删除统计信息

在构建过程中,我们基于 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 不删除统计信息?

dacpac sqlpackage sql-server-data-tools

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