我正在使用 VS2010 premium,并且我的解决方案中有一个数据库项目。我只使用它来存储 SP 和函数脚本,以便我可以将它们保存在 TFS 中并针对我们的开发数据库执行它们。
因此,我编辑了解决方案配置以不构建项目,该项目在构建输出中显示:
------ Skipped Rebuild All: Project: SocratesApplicationDB, Configuration: Debug Any CPU ------ Project not selected to build for this solution configuration
========== Rebuild All: 15 succeeded, 0 failed, 1 skipped ==========
Run Code Online (Sandbox Code Playgroud)
但是,因为我没有任何引用的表等,我仍然会收到大量 SQL03118 和 SQL04151 错误/警告,这使得很难找到任何“真正的”错误/警告。
有谁知道如何让 VS 完全忽略我的数据库项目并且不尝试验证任何内容(除了将其从我的解决方案中删除)?
我无法通过 msbuild 使用命令行参数部署数据库项目。我想要:
但这似乎无缘无故地不可能。肯定有一些我遗漏的简单问题。我尝试了以下变体:
msbuild /t:SqlDeploy /p:SqlPublishProfilePath="test.publish.xml" /p:TargetConnectionString="Data Source=..." Database.sqlproj
msbuild /t:Build /t:Deploy /p:SqlPublishProfilePath="test.publish.xml" /p:TargetConnectionString="Data Source=..." Database.sqlproj
msbuild /t:Build /t:Publish /p:SqlPublishProfilePath="test.publish.xml" /p:TargetConnectionString="Data Source=..." Database.sqlproj
Deploy Error : The connection string is not valid在所有 3 种情况下,我都使用完全相同的 ConnectionString,因此它不是连接字符串中的拼写错误或错误。我需要使用第三个变体,但这只是失败了..我错过了什么?
deployment msbuild publish database-project sql-server-data-tools
当我登录到 azure 门户时,选择我的 SQL 数据库 -> 工具 -> QueryEditor 并输入:
ALTER USER MyUser WITH Password = '**********'
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法执行查询。错误:无法为无法在数据库中进行身份验证的用户提供参数 PASSWORD。
我在 MyUser.sql (Build Action=Build) 的 Visual Studio 数据库项目中创建了用户:
CREATE USER [My_User] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo];
Run Code Online (Sandbox Code Playgroud)
为什么我收到消息?
是否可以在数据库项目中创建用户,以便我稍后指定密码(不是源代码)?
我正在使用Visual Studio 2017中的Schema Compare功能来比较数据库和数据库项目(.sqlproj)。如果我对项目进行了一些更改,它还会向某些模式文件中添加空白行。经过一番调查,我发现我并不是唯一面临此问题的人。从投票数来看,我猜想MS不会很快解决此问题。也许有人为此找到了任何解决方法?
sql-server database-project visual-studio schema-compare sql-server-data-tools
在存储过程中使用 sp_executesql 时,SQL Server 数据库项目会发出警告“未解析对对象 sp_executesql 的引用”。
SQL Server 2008的Visual Studio 2008数据库项目
该项目具有预部署和后部署SQL脚本的占位符.他们工作 - 好吧,大多数时候反正.
该项目有一个Always-Recreate-Database选项:删除现有数据库,每次都创建一个新的热门数据库.
当我部署我的数据库时,整个SQL脚本被放在一起并执行.
我的数据库用于复制,作为部署后脚本的一部分,我将服务器指定为分发,创建复制并向其添加文章.
因此,我必须关闭复制.而这个合理的地方就是预部署.
VS2008很快就擦掉了脸上露出的笑容.如果选中了Always-Recreate-Database,那么它会删除脚本并重新创建数据库,然后放置我的预部署脚本,然后放置其他所有内容.
有没有办法让我更改数据库项目的模板,以便在任何部署发生之前执行预部署SQL脚本.
每当我打开我的SLN下面有多个数据库项目时,打开需要很长时间(10到15分钟).我收到的消息是:
Analyzing database schema. Your database projects will be ready after 23000 operations are completed.
Analyzing database schema. Your database projects will be ready after 45000 operations are completed.
Analyzing database schema. Your database projects will be ready after 59871 operations are completed.
Analyzing database schema. Your database projects will be ready after 63254 operations are completed.
Analyzing database schema. Your database projects will be ready after 87698 operations are completed.
Run Code Online (Sandbox Code Playgroud)
Visual Studio没有告诉我它正在分析什么?
我有什么方法可以加快这个过程吗?
使用vsdbcmd部署我的数据库时:
vsdbcmd.exe /a:Deploy /manifest:MyDatabase.deploymanifest
Run Code Online (Sandbox Code Playgroud)
我得到:
SQL01268 .Net SqlClient Data Provider: Msg 50000, Level 16, State 127, Line 6 Rows were detected. The schema update is terminating because data loss might occur.
SQL01268 An error occurred while the batch was being executed.
这是很好的,但它并没有告诉我那里的dataloss会发生.为了找出我必须使用的<DeployToScript>True</DeployToScript>,然后加载脚本以查看:
IF EXISTS (select top 1 1 from [dbo].[MyTable])
RAISERROR ('Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT
有没有办法让vsdbcmd在直接部署到DB而不必先生成sql时显示此信息?
谢谢
我希望能够在我的Visual Studio 2012数据库项目和开发或生产数据库之间进行模式比较,但是有许多表是动态创建的,我想通过表/视图名称将它们从比较中排除面具.IE"TABLE_%"或"VIEW_%".
有谁知道我如何通过visual studio 2012实现这一目标?如果有必要,我可以将这些项目移动到不同的模式,但是如果我这样做,我会有同样的头痛.
提前致谢.
我希望能够做的是能够在Visual Studio数据库项目中创建一个定义变量的publising xml脚本,该脚本将用于编写脚本.
我的问题是我得到一个错误:"SQL72008:未定义变量DeployType." 如果我没有在后部署脚本中定义变量,就像这样":setvar DeployType"varchar(100)"
当我运行publish.xml时,DeployType参数正确地设置在生成的脚本的顶部但是该值被":setvar DeployType"varchar(100)覆盖.所以为了使这项工作,我需要手动删除运行此脚本之前的行.
所以问题是如何在没有在postdeployment脚本中默认setvar变量的情况下让项目构建并能够发布?

这是我的PostDeployment.sql文件的内容,它不会在没有默认DeployType变量的情况下构建
--The line causing my problems. I would like to skip it somehow.
:setvar DeployType "varchar(100)"
Print 'Always include core'
:r ..\Data\Core\_BaseCore.sql
--Conditionaly add based on DeployType comming from the publishing.xml
IF ('$(DeployType)' = 'A')
BEGIN
:r ..\Data\A\_BaseKnap.sql
END
ELSE IF ('$(DeployType)' = 'B')
BEGIN
:r ..\Data\B\_BaseB.sql
END
Run Code Online (Sandbox Code Playgroud)
这是Database.publish.xml文件中的内容
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>db name</TargetDatabaseName>
<DeployScriptFileName>Database.sql</DeployScriptFileName>
<ProfileVersionNumber>1</ProfileVersionNumber>
<TargetConnectionString>Connection string</TargetConnectionString>
</PropertyGroup>
<ItemGroup> …Run Code Online (Sandbox Code Playgroud) database-project ×10
sql ×3
sql-server ×3
msbuild ×2
build ×1
datadude ×1
deployment ×1
publish ×1
sqlcmd ×1
vsdbcmd ×1