Visual Studio数据库项目中DBMDL文件的功能是什么?
假设我们有一个名为的数据库项目,MyDatabase那么一个名为的文件MyDatabase.jfm出现在项目目录的根目录中.
我做过Google搜索,但没有提供任何见解.有一些旧软件的引用,但大多数结果是垃圾邮件/木马软件.我也看过SO,但这也没有产生任何结果.
有谁知道它是什么以及它为什么存在?
计划是将它添加到Visual Studio的gitignore文件中,但我需要知道它首先提交PR ...
UPDATE
这现在打破了团队资源管理器更改视图."输出"窗口中未显示以下内容的更改:
因此,我将把文件添加到.gitignore文件并提交PR.最终了解这个文件是什么以及它来自哪里会很好...
我有一个数据库项目作为我在Visual Studio 2013中的解决方案的一部分.在过去的3周内完美地工作,现在突然间它将无法构建,因此我无法发布任何更改.我收到了MSBuild错误:
"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v12.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(513,5):错误:MSB4018:"SqlBuildTask"任务意外失败.System.MethodAccessException:尝试通过方法'Microsoft.Data.Tools.Schema.Sql.Build.SqlTaskHost.OnCreateCustomSchemaData(System.String,System.Collections.Generic.Dictionary`2)'来访问方法'Microsoft.Data.Tools. Components.Diagnostics.SqlTracer.ShouldTrace(System.Diagnostics.TraceEventType)'失败了."
有人有任何想法吗?我今天早上做的就是从源代码控制中删除最新的更改.我无法看到这会如何搞乱实际MSBuild过程,而最后签到的人根本没有任何问题.
我正处于研究阶段,试图在现有的小项目上采用2012数据库项目.我是C#开发人员,而不是DBA,所以我对最佳实践并不是特别流利.我一直在搜索谷歌和stackoverflow几个小时,但我仍然不知道如何正确处理一些关键的部署方案.
1)在几个开发周期的过程中,如何管理我的数据库的多个版本?如果我的数据库v3上有客户端,并且我想将它们升级到v8,我该如何管理它?我们目前为每个版本的产品管理手工制作的架构和数据迁移脚本.我们是否还需要单独执行此操作,或者新范例中是否有某些内容支持或替换此内容?
2)如果架构以需要移动数据的方式更改,那么处理此问题的最佳方法是什么?我假设预部署脚本中有一些工作要保留数据,然后Post-Deploy脚本会将其放回正确的位置.这是它的方式还是有更好的东西?
3)对如何最好地使用这些新技术的任何其他建议或指导也非常感谢!
更新:自从我最初提出这个问题以来,我对这个问题的理解有所增加,当我想出一个可行的解决方案时,它并不是我希望的解决方案.这是我的问题的重写:
我遇到的问题纯粹与数据有关.如果我的应用程序版本1上有一个客户端,并且我想将它们升级到我的应用程序的第5版,那么如果他们的数据库没有数据,那么我就没有问题.我只是让SSDT智能地比较模式并一次性迁移数据库.不幸的是,客户有数据,所以它并不那么简单.架构从我的应用程序的版本1更改为版本2到版本3(等)所有影响数据.我目前管理数据的策略要求我为每个版本升级维护一个脚本(1到2,2到3等).这使我无法直接从我的应用程序的版本1转到版本5,因为我没有数据迁移脚本直接在那里.为每个客户端创建自定义升级脚本或管理从每个版本到每个更高版本的升级脚本的前景都是指数级无法管理的.我所希望的是,SSDT能够实现某种策略,使得管理数据方面变得更容易,甚至可能像架构方面那样容易.我最近使用SSDT的经历并没有让我对这种策略存在任何希望,但我希望能找到不同的方法.
sql sqlcmd database-project visual-studio-2012 sql-server-data-tools
我在VS2013(Update 3)中创建了一个新的SQL Server数据库项目并尝试构建但它失败了.我收到的唯一构建输出如下:
------ Build started: Project: Database1, Configuration: Debug Any CPU ------
Creating a model to represent the project...
Done building project "Database1.sqlproj" -- FAILED.
Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
如果我通过具有详细详细程度的MSBuild.exe构建项目,我会看到以下内部故障:
Task "SqlBuildTask"
Creating a model to represent the project...
Done executing task "SqlBuildTask" -- FAILED.
Run Code Online (Sandbox Code Playgroud)
搜索网络后,我尝试了以下解决方案,但无济于事:
-Restart VS.
-Restart机器
- 修复VS Update 3并重启
- 修复VS2013并重启
我错过了什么?
我在中创建了一个数据库项目VS2012.我添加了数据库结构.它可以很好地发布和比较数据库.
现在发布我想自动加载几个带有默认数据的表.
我创建了五个脚本文件,其中包含INSERT从SQL Management Studio生成的语句.它们被添加到我的数据库项目中的Script文件夹中.
然后我就设定了BuildAction=PostDeploy.这很好用.但由于某种原因,它只能将一个脚本设置为PostDeploy....
我意识到我可以将所有脚本移动到一个文件中.但我有很多,并且非常希望将它们分组在单独的文件中以维持一些顺序.
然后我创建了一个PostDeploy.sql文件并尝试从那里引用所有其他脚本文件.文件头给出了方向:
Post-Deployment Script Template
----------------------------------------------------------------------------
This file contains SQL statements that will be appended to the build script.
Use SQLCMD syntax to include a file in the post-deployment script.
Example: :r .\myfile.sql
Run Code Online (Sandbox Code Playgroud)
所以我写了我的文件:
:r .\MyScript1.sql
:r .\MyScript2.sql
:r .\MyScript3.sql
:r .\MyScript4.sql
:r .\MyScript5.sql
Run Code Online (Sandbox Code Playgroud)
该文件抱错语法错误.
我使用VS 2012创建了数据库项目.完成模式比较后,应启用更新目标按钮以与目标同步.
但它没有得到启用.任何帮助PLZ.
我正在使用VS 2012和sp 3,SQL Server 2012,

database-project visual-studio-2012 sql-server-2012-datatools
当数据表中存在数据行时,是否有人知道从数据库中删除现有列的最佳方法.
我试过的似乎并不想工作.我在数据库项目中包含了一个预部署脚本
GO
if exists(select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Mercury.dbo.Discounts' and COLUMN_NAME = 'ColumnToRemove')
BEGIN
ALTER TABLE Database.dbo.Table1 Drop Column ColumnToRemove
END
GO
Run Code Online (Sandbox Code Playgroud)
然后在首先创建表的脚本中,我从Create Table Script中删除了有问题的列
当执行dacpac时,我得到以下内容
Initializing deployment (Start)
*** The column [dbo].[Table1].[ColumnToRemove] is being dropped, data loss could occur.
Initializing deployment (Complete)
Analyzing deployment plan (Start)
Analyzing deployment plan (Complete)
Updating database (Start)
An error occurred while the batch was being executed.
Updating database (Failed)
*** Could not deploy package.
Warning SQL72015: The column [dbo].[Table1].[ColumnToRemove] is …Run Code Online (Sandbox Code Playgroud) 我们使用Visual Studio和数据库项目来生成我们的数据库.
我刚刚进行了一些数据库更改(包括添加一个名为的新表Correspondence)将这些更改导入到数据库项目中,并尝试部署(重建)数据库.
当我这样做时,我收到以下错误:
创建[dbo].[通信] ...消息1934,级别16,状态1,服务器(服务器名称),行1 CREATE TABLE失败,因为以下SET选项具有不正确的设置:'ANSI_WARNINGS,ANSI_PADDING'.验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用.
任何人都可以向我解释这个错误,并帮我解决它?这是数据库项目用于创建此表的脚本.
PRINT N'Creating [dbo].[Correspondence]...';
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO
CREATE TABLE [dbo].[Correspondence] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[WorkbookId] INT NOT NULL,
[ProviderId] UNIQUEIDENTIFIER NOT NULL,
[MessageThreadId] INT NOT NULL,
[MessageThreadType] AS ((1)) PERSISTED NOT NULL
);
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER OFF;
GO
PRINT N'Creating PK_Correspondence...';
GO
ALTER TABLE [dbo].[Correspondence]
ADD CONSTRAINT [PK_Correspondence] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = …Run Code Online (Sandbox Code Playgroud) 只是想知道是否有人知道如何将保存的发布配置文件设置为默认即在我选择发布时自动加载的配置文件.我喜欢新的配置文件方法,但是我在开发过程中不得不一遍又一遍地重新选择相同的配置文件.