我们正在尝试在Windows 7,VS 2010 SP1和SSDT 2010(从iso映像安装SSDT 2010)的新机器中设置sql项目.但是当我打开sqlproj时收到以下消息.
'验证您的模型与源文件同步.您的数据库将在12734运行完成后准备就绪.而且这个数字还在不断增加.它继续在后台运行.
尝试重新安装SSDT,VS 2010但没有帮助.
为Northwind db创建了一个新的数据库项目,并遇到了同样的问题.Ran procmon并看到它只是翻过相同的文件.
它在具有类似配置的另一个系统中工作正常.
编辑
这个问题似乎与TFS有关,如果我们从TFS解除绑定它可以正常工作.但不确定确切的原因.
任何建议都会非常有用.
我正在尝试使用 Azure DevOps Pipelines 从 GitHub 构建我的 .NET Core 2.1 解决方案。它包含一个 SQL 项目,其 TargetFrameworkVersion 为v4.6.2
. 这个项目总是无法构建。
Build FAILED.
/home/vsts/work/1/s/MySolution/MyDatabase/MyDatabase.sqlproj : warning NU1503: Skipping restore for project '/home/vsts/work/1/s/MySolution/MyDatabase/MyDatabase.sqlproj'. The project file may be invalid or missing targets required for restore. [/home/vsts/work/1/s/MySolution/MySolution.sln]
/home/vsts/work/1/s/MySolution/MyDatabase/MyDatabase.sqlproj(57,3): error MSB4019: The imported project "/usr/share/dotnet/sdk/2.1.403/Microsoft/VisualStudio/v15.0/SSDT/Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
1 Warning(s)
1 Error(s)
Run Code Online (Sandbox Code Playgroud)
如何为构建服务器引用或包含这些目标?它在 VS2017 中构建良好。我花了一天多的时间打猎,找不到关于这个问题的任何信息。
我禁用了所有扩展,只打开了1个Sql Project.但每当我关闭SQL文件时,Visual Studio都会挂起.
受影响的版本
- 2017年企业
- 2015年企业
在此"挂起时间"期间,Visual Studio具有"无响应"状态.
它似乎也保持锁定的时间与关闭/打开的文件数量相关.
编辑:使用SafeMode中的devenv重现
思考?
visual-studio sqlproj sql-server-data-tools visual-studio-2015 visual-studio-2017
我们在Visual Studio 2012中有一个SQL Server数据库项目(.sqlproj),我们将其用作数据库模式的源代码控制.它所做的一件很酷的事情是生成SQL以在我们发布代码时更新架构.
我们有3个配置文件设置 - 开发,测试,现场 - 这一切都正常.
最近我们将实时数据库从"简单"恢复更改为"完全"恢复.在我们尝试将下一个部署运行到开发和测试之前,一切都很棒.我们不希望在开发和测试时将恢复模式从简单更改为完全 - 我们无需更改它.但是,当我们发布数据库项目时,它现在想要设置它.
我想根据我使用的发布配置设置恢复模型.我已经尝试创建一个变量并在项目xml中分配它:
<Recovery>$(RecoveryModel)</Recovery>
Run Code Online (Sandbox Code Playgroud)
但它仍尝试在部署脚本中将其设置为"Full":
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\"
:setvar DefaultLogPath "C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\"
:setvar RecoveryModel "Simple"
GO
:on error exit
GO
/*
Detect SQLCMD mode and disable script execution if SQLCMD mode is not supported.
To re-enable the script after enabling SQLCMD mode, execute the following:
SET NOEXEC OFF;
*/
:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
BEGIN
PRINT N'SQLCMD mode must be enabled …
Run Code Online (Sandbox Code Playgroud) 我试图使用命令从MSBuild命令行发布.sqlproj:
msbuild /t:Publish [MySqlProjPath]
但是我收到以下错误:
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
我觉得奇怪的是,从Visual Studio 2012我可以成功发布同一个项目.Visual Studio是否在发布之前设置任何神奇的msbuild属性以从另一个目录中获取.targets文件?
我最近将我的一个项目更新到Visual Studio 2013.更新将我的.dbproj更改为.sqlproj,使其符合新的SQL项目格式.
在转换之后,我运行了一个与我的SQL项目和我的SQL 2008生产数据库进行模式比较,它现在认为每个对象都是不同的.通过模式比较工具进行调查后,看来差异在于每个对象定义还包括为该对象授予每个角色或用户的权限的语句.
因此,服务器端看起来像这样:
CREATE PROC MyCoolProc
BEGIN
--some code
END
GO
GRANT EXECUTE
ON OBJECT MyCoolProc TO MyAwesomeUser
AS [Schema];
GO
Run Code Online (Sandbox Code Playgroud)
并且同一对象的客户端看起来像这样:
CREATE PROC MyCoolProc
BEGIN
--some code
END
Run Code Online (Sandbox Code Playgroud)
为什么是这样?当我使用Visual Studio 2010运行模式比较时没有发生这种情况.此外,我查看了SQL比较工具的所有选项,但我找不到"忽略对象的权限声明".有人可以帮忙吗?
编辑
为了确保这是Visual Studio的SQL Compare工具而不是SQL Server本身的问题,我在我的登台和生产数据库之间重新运行Visual Studio 2010中的比较,并且对象定义不像他们那样包含对象权限在Visual Studio 2013中.
sql-server-2008 database-schema schema-compare visual-studio-2013 sqlproj
我正在为我们的MSSQL项目使用SSDT(和sqlproj).发布到每个环境时,我们需要设置一些变量.
这在我们为所有变量赋值的大多数环境中都很有用,但是当我们发布到我们的实时数据库时,我希望能够使DomainPrefix成为空白字符串.
当我尝试更改Live.profile.xml以将DomainPrefix设置为无值时,我收到错误:"生成部署计划期间发生错误.部署无法继续.缺少以下SqlCmd变量的值:DomainPrefix."
这就是我希望Live.profile.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<TargetDatabaseName>DB_NAME</TargetDatabaseName>
<DeployScriptFileName>DB_NAME.sql</DeployScriptFileName>
<TargetConnectionString>CONNECTION_STRING</TargetConnectionString>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="DomainPrefix">
<Value></Value>
</SqlCmdVariable>
<SqlCmdVariable Include="Environment">
<Value>live</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何将SqlCmdVariable设置为空值或使其成为可选变量?
使用:
我正在使用带有SQL项目的SQL数据工具(SSDT)的Visual Studio 2013.
当我打开项目时,每次它都会检查一些背景模型并显示如下消息"验证您的模型是否与您的源文件同步.您的数据库项目将在1106操作竞争后准备就绪"
据我所知,我没有做任何事情来明确地启动这个验证,所以我认为这是在进行某种后台编译/处理/无论如何.
如果有一个大型数据库,那么它将花费太多时间,我需要等待完成此操作.
有什么办法可以解决这个问题吗?
visual-studio-2013 sql-server-2014 sqlproj sql-server-data-tools
我有一个单独的数据库项目,我想在同一个解决方案中构建它,然后引用创建的 dacpac。当我尝试添加数据库项目时,它构建得很好,并且 dll 被添加到辅助项目文件中,但 dacpac 不是。
有没有办法通过 msbuild 将 dacpac 复制到我的主项目中?我一直在想,应该有一种方法可以修改 sqlproj 文件或 csproj 文件,以便将 dacpac 作为项目输出之一包含在内。我对 msbuild 的了解并不广泛,我一直无法弄清楚。
在我看来,我需要以某种方式添加 dacpac 来说出“@(ReferenceCopyLocalPaths)”项目,但我一直无法弄清楚。任何提示或建议将不胜感激。
我尝试做一些类似于这里引用的事情MSBuild - ItemGroup of all bin directory of all subdirectories通过执行以下操作:
<Target Name="AfterBuild">
<Message Text="@(MainAssembly)" />
<!--<DacPacs Include="%(ProjectReference.Directory)**" />-->
<ItemGroup>
<DacPacs Include="%(ProjectReference.Directory)**/*bin*/*.dac" />
</ItemGroup>
<Message Text="@(ReferenceCopyLocalPaths)" />
<Message Text="DacPacs: @(DacPacs)" />
<Message Text="Target Database: $(TargetDatabase)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这对 DacPacs 没有任何帮助(添加通配符时)。我还尝试从 sqlproj 文件中引用项目组之一,但结果为空:
我正在尝试使用TeamCity在构建数据库项目后自动进行发布。
我正在使用带有“发布”目标的MSBuild运行器
我的SQL项目包含一个发布配置文件“ Test.publish.xml”
我使用此MSBuild参数来告诉MSBuild使用哪个发布配置文件:
/p:SqlPublishProfilePath=Test.publish.xml
Run Code Online (Sandbox Code Playgroud)
项目的输出路径已被修改,因此它不是默认的“ bin \ Output”,而是“ sql \ Staging”
当执行构建步骤时,出现错误:
[12:19:11]Step 3/3: Publish (MSBuild) (5s)
[12:19:15][Step 3/3] Alpha\Alpha.sqlproj.teamcity: Build target: Publish
[12:19:15][Alpha\Alpha.sqlproj.teamcity] SqlPublish
[12:19:15][SqlPublish] SqlPublishTask
[12:19:15][SqlPublishTask] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(1717, 5): File "D:\BuildAgent\work\8c364da49a1f90ba\Alpha\bin\Output\Alpha.sqlproj.dacpac" does not exist.
[12:19:16][Step 3/3] Step Publish (MSBuild) failed
Run Code Online (Sandbox Code Playgroud)
因此,如您所见,它将在标准bin \ Output目录中而不是修改后的输出目录路径中查找.dacpac文件。另外,它期望dacpac文件名为Alpha.sqlproj.dacpac,但我的dacpac文件名为Alpha.dacpac
我需要做的就是告诉MSBuild在哪里找到dacpac文件,因为它没有注意到自定义生成输出目录。是否有另一个MSBuild参数或可以添加到发布配置文件的内容?
我知道我可以使用sqlpackage.exe作为简单的替代方法,但是尽管已安装和安装了SQL Server数据工具,但它似乎不在计算机上(位于C:\ Program Files \ Microsoft SQL Server \ 110 \ DAC \ bin)。那是我正在努力的另一场战斗...
sqlproj ×10
msbuild ×3
.net ×1
azure-devops ×1
build ×1
c# ×1
sql-server ×1
sqlcmd ×1
sqlpackage ×1
teamcity ×1
tfs ×1