标签: sql-server-data-tools

SSDT生成非SQLCMD部署脚本

我正在使用SSDT来管理我的数据库.现在它生成SQLCMD部署脚本.有没有办法让它生成普通的t-sql脚本?

sql-server sql-server-data-tools

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

在UnitTesting之前运行脚本

SQL Server单元测试中的“测试初始化​​”脚本在每种测试方法之前运行,而“测试清除”在每种测试方法之后运行。

所以例如我有这个结构

UnitTests          -- Main Project
  - FooSchema      -- Test Class
     - SprocFoo1   -- Individual Unit Tests / Test Methods 
     - SprocFoo2
  - BarSchema
     - SprocBar1
     - SprocBar2
Run Code Online (Sandbox Code Playgroud)

像这样的测试运行

 -- Test Initialiaze for TestClass FooSchema
    -- Pre-Test   -- for SprocFoo1
    -- Test       -- for SprocFoo1
    -- Post-Test  -- for SprocFoo1
    -- Pre-Test   -- for SprocFoo2
    -- Test       -- for SprocFoo2
    -- Post-Test  -- for SprocFoo2
 -- Test Cleanup for TestClass FooSchema
 -- Test Initialiaze for TestClass BarSchema
    -- Pre-Test …
Run Code Online (Sandbox Code Playgroud)

sql-server unit-testing visual-studio-2012 sql-server-data-tools

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

是否可以将触发器移动到SSDT项目中自己的文件中?

我有一个Visual Studio数据库项目或我的公司数据库的SSDT。

我有用于表,视图,存储过程等的文件夹,我想知道是否可以为触发器提供一个文件夹。

当前,触发器与表定义存储在同一文件中,如果可能,我想将它们分开。

sql-server triggers visual-studio sql-server-data-tools

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

部署dacpac时更改逻辑和物理文件名

使用SqlPackage.exe首次部署dacpac时,如何控制新数据库的逻辑和物理文件名.

标准的SQL语句是:

CREATE DATABASE Bar
ON PRIMARY (NAME = 'Foo', FILENAME = '...\Foo\Foo.mdf')
LOG ON (NAME = 'Foo_log', FILENAME = '...\Foo\Foo.ldf')
Run Code Online (Sandbox Code Playgroud)

sql-server dacpac sql-server-data-tools

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

Code First Entity Framework和SQL Server Data Tools数据库项目的开发过程

我一直非常成功地使用数据库第一实体框架(EDMX)和SQL Server数据工具数据库项目 - 更改数据库中的模式和"从数据库更新模型"以使它们进入EDMX.我看到虽然实体框架7将放弃EDMX格式,我正在寻找一个新的流程,这将允许我将Code First与数据库项目结合使用.

我现有的很多开发和部署过程都依赖于拥有一个包含模式的数据库项目.源代码控制与代码一起部署,用于使用部署前和部署脚本完成数据迁移后的生产数据库更新.我不愿意放弃它.

作为这项工作的一部分,我会热衷于将一个大的EDMX拆分成许多较小的模型.这将意味着多个Code First模型引用相同的数据库.

假设我有一个现有的数据库和一个数据库项目 - 我想我将首先使用以下向导创建一组初始实体和上下文类 - 我会为每个模型执行此操作.

Add | New Item... | Visual C# Items | Data | ADO.NET Entity Data Model | Code first from database
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 我从哪里去?如何处理架构更改?只要我可以更新数据库模式,我就可以使用模式比较操作来获取对项目的更改.

这些是我正在考虑的选项.

  1. 在数据库中进行更改并使用上面的向导进行重新生成.我想我需要对部分类中的实体和/或上下文类进行任何修改,以便它们不会被覆盖.使用要包含的表等列表对其进行自动化将非常方便.Powershell或T4模板可能吗?SqlSharpener(由Keith在评论中提出)看起来可能对此有所帮助.我还要看看除了检查数据库存在和架构兼容性之外的所有内容,正如Steve Green在评论中所建议的那样.
  2. 对代码进行更改并使用迁移将这些更改应用于数据库.根据我的理解,没有模型清晰地映射到数据库模式(我的没有)可能会带来问题.我还在网上看到一些关于迁移没有涵盖所有数据库对象类型的抱怨 - 这也是我在前一段时间玩Code First的经历 - 我认为没有涵盖的独特约束.实体框架7中有哪些改进?
  3. 在数据库中进行更改,然后使用迁移作为代码和数据库之间的一种比较.查看差异是什么,并调整代码以适应.继续前进,直到没有差异.
  4. 在代码和数据库中手动进行更改.显然,这不是很吸引人.

哪个最好?在尝试实现它之前,我还需要知道什么吗?还有其他更好的选择吗?

entity-framework ef-code-first sql-server-data-tools

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

Visual Studio 2013 SSDT - 编辑数据 - IS NULL不能用作过滤器

我试图用ssdt过滤表的某些行(左键单击表,查看数据,排序和过滤)

在这里,我只需要添加IS NULL一个条件到一个nvarchar字段.
但是一旦我应用过滤器,我就会收到错误:

关键字SET附近的语法不正确

看看编辑写的查询,我看到了这个问题fldName =,没有我NULL支票的迹象

我该怎么做?

这是结果:

SELECT TOP 1000 [Ktyi_TS002_IdTipoDocumento] ,
[nvc_TS002_TipoDocumento] ,[nvc_TS002_IdFunzioneControllo] ,[bit_TS002_Annullato] 
FROM [dbo].[TS002_TipoDocumento] 
WHERE [nvc_TS002_IdFunzioneControllo] =
Run Code Online (Sandbox Code Playgroud)

这是在谷歌中找到的数据编辑器的一些图像,以显示我们在谈论谁不知道ssdt:

在此输入图像描述

在此输入图像描述

sql visual-studio sql-server-data-tools

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

自动化Visual Studio DB架构比较并检查GIT

我有一个用于SQL Server DB的Visual Studio 2015数据库项目,我可以在其中进行模式比较/数据比较,并手动将项目签入GIT.我想自动完成这个完整的模式/数据比较过程,生成脚本并将其检入GIT.有可能吗?如果是这样的话?

也许我会做这样的事情?使用EnvDTE自动化Visual Studio

sql-server-2012 sql-server-data-tools visual-studio-2015

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

无法编写表达式功能成员

注意:这似乎是与SSDT项目一起使用的编译器的一个问题,它显然已在2017年RC中修复.我的问题类似于这里描述的问题.

我有一些代码拒绝让我把它写成一个表达式的函数成员.简而言之,我想这样做:

void foo() => bar();
Run Code Online (Sandbox Code Playgroud)

但IDE发脾气并要求我这样写:

void foo() { bar(); }
Run Code Online (Sandbox Code Playgroud)

我的意思是,这是两个额外的角色,但我不确定它为什么抱怨,错误也没有意义.它给了我以下3个错误:

  • CS0000:; 预期
  • CS0000:方法必须具有返回类型.
  • CS0000:预期的标识符.

完整代码看起来像这样.

public static void foo() => bar("some param"); // Errors on this line.
static void bar(string myParam) { //20 lines of code } 
Run Code Online (Sandbox Code Playgroud)

我在C#交互式窗口中对此进行了测试,所有内容都编译并正确运行.我在代码中找不到任何不可打印的字符.

这是使用VS 2015社区,目标框架是4.6.1

完整代码:

using System.Data.SqlClient;
using Microsoft.SqlServer.Server;

public partial class Triggers
{

    private const string ConnectionString = "context connection = true";

    private const string ReadInsertedTable = @"
    SELECT ID,
           (
               SELECT *
               FROM inserted AS …
Run Code Online (Sandbox Code Playgroud)

c# sql-server-data-tools visual-studio-2015

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

为Visual Studio 2017无头安装SQL Server数据工具(SSDT)

对于构建服务器,我们需要为Visual Studio 2017无头安装SQL Server数据工具.

我们的构建服务器已经拥有"Visual Studio 2017的构建工具",它为无头构建提供了很好的支持.但是由于缺少MSBuild目标,任何SSDT项目的解决方案都会失败,例如:

[MSBuild] src\Database\Upfront.Database.sqlproj: Build default targets [10:27:46][src\Database\Upfront.Database.sqlproj] E:\BuildAgent\work\7769fbf76d8b9008\src\Database\Upfront.Database.sqlproj(56, 3): error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\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.

首先,我尝试修改"Build Studio for Visual Studio 2017"安装的组件集,但似乎没有可用的SSDT组件.

其次,我尝试为Visual Studio 2017安装SSDT,它似乎没有正确安装到"VS 2017构建工具"配置文件中.它允许我创建一个新的VS 2017配置文件,例如SQL,因此安装了所需的MSBuild文件C:\Program Files (x86)\Microsoft Visual Studio\2017\SQL\; 但是它改变了我的msbuild环境变量,因此C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools找不到"Build Tools for VS 2017"文件(其中),导致C#项目无法构建.

似乎"用于Visual Studio 2017的SSDT"和"用于Visual …

sql-server-data-tools visual-studio-2017

5
推荐指数
2
解决办法
2776
查看次数

如果递归的深度太深,则无法为Visual Studio 2017社区安装SSDT

“设置失败”递归太深;堆栈溢出0x800703E9。

我有Windows 10和最新的Visual Studio版本。我尝试重新启动以确保我拥有尽可能多的资源。我有4克公羊。

installation sql-server-data-tools visual-studio-2017

5
推荐指数
2
解决办法
5885
查看次数