Visual Studio 2010 引入了数据库项目和一整套相关功能,据说可以促进数据库开发。多年来,我一直使用 SQL Server Management Studio (SSMS) 进行数据库开发,没有出现任何问题。
我有一个运行数据库的 SQL Server 2008,我想放入 TFS。因此,我使用了导入数据库的 Visual Studio 2013 数据库项目。修复了一堆错误后,我只剩下一个错误:
在一个视图中,开发人员用于OPENQUERY访问链接服务器。因此,我导入了一个包含正确数据库的 DACPAC,并Add Database Reference使用以下参考选项将其添加到项目中。

这是原始视图创建的较短版本:
CREATE VIEW dbo.vwStatus
AS
SELECT StatusID, StatusName
FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:
错误 136 SQL71501:视图:[dbo].[vwStatus] 具有对对象 [LinkedServer] 的未解析引用。
所以我尝试插入服务器名称变量
FROM OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1
Run Code Online (Sandbox Code Playgroud)
这导致
错误 176 SQL46010:$(LinkedServer) 附近的语法不正确。
我稍微摆弄了一下并尝试了以下操作(启用和不启用带引号的标识符):
FROM OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM OPENQUERY([$(LinkedServer)], 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM OPENQUERY([LinkedServer], 'SELECT * FROM [DB].[dbo].tbStatus') AS
FROM …Run Code Online (Sandbox Code Playgroud) 我发现,如果我将 SQL Server 代理作业编写为脚本开头的“创建到”脚本use msdb- 所以我假设作业存储在 msdb 数据库中?
将 SQL Server 作业添加到 Visual Studio 数据库项目的最佳方法是什么?我将 msdb 数据库添加到数据库解决方案中,但这似乎没有对作业的任何引用。
我希望将作业与数据库一起部署/更新......这似乎不可能?
我在全新的 NUC 上安装了 Windows 11,然后安装了所有更新。安装Visual Studio 2022 CE并SSMS (v 18.10)
我尝试启动 localDB,假设它是作为 Visual Studio 2022/SSMS 的一部分安装的,当(localdb)\\mssqllocaldb在 SSMS 中输入\xc2\xa0 时,它收到错误\xc2\xa0
Cannot connect to (localdb)\\mssqllocaldb.\n\nSQL Network Interfaces, error: 50 - Local Database Runtime error occurred.\xc2\xa0\n\nError Number: -1983577846\nRun Code Online (Sandbox Code Playgroud)\n然后我验证/尝试启动实例,如下所示
\nsqllocaldb stop mssqllocaldb\nsqllocaldb delete mssqllocaldb\nsqllocaldb start "MSSQLLocalDB"\nRun Code Online (Sandbox Code Playgroud)\n当输入最后一个命令时,我收到错误\xc2\xa0
\n由于以下错误,LocalDB 实例“MSSQLLocalDB”启动失败:\n无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。
\n我查看了下找到的日志文件
\n....\\AppData\\Local\\Microsoft\\Microsoft SQL Server 本地 DB\\Instances\\MSSQLLocalDB
\n并查看一些错误文件并按日期选择最新的一个。
\n它包含信息,最后一行是\xc2\xa0
\n2021-12-11 10:48:42.67 spid10s \xc2\xa0 \xc2\xa0 There have been …Run Code Online (Sandbox Code Playgroud) 我创建了一个视图,该视图从复杂查询中的多个表中进行选择。
当我构建 VS2010 数据库项目时,SQL 脚本包含以下顺序的 CREATE 命令:(1) 视图,(2) 存储过程,然后 (3) 触发器。
现在,当我运行部署脚本时,出现错误:
*** SQL01268 D:\scripts\vs2010\Database.sql (28494,0).Net SqlClient Data Provider:
Msg 4405, Level 16, State 1, Procedure MyViewSave, Line 18 View or function 'MyView' is
not updatable because the modification affects multiple base tables
Run Code Online (Sandbox Code Playgroud)
如果触发器在存储过程之前创建,就没有问题。
如何确保在存储过程之前创建触发器?
谢谢!
visual-studio deployment sql-server-2008-r2 visual-studio-2010
好的,这就是我要做的。SSIS 包,用于从我们的生产系统查询数据并将它们放入 CSV。有一个将它们上传到第三方的 VB 脚本任务。需要一个带有身份验证的多帖子 HTTP 帖子以及在第 3 方的标头中发送的几个特定字段,因此必须执行自定义 VB 脚本而不是使用 Web 目标。
我有一个 ForEach 循环,通过脚本上传每个文件,然后删除它。在 BIDS 中效果很好。但是当我将它上传到 SSIS 包存储时,上传部分不起作用。但不会抛出任何错误,因为文件仍然被删除。
查询部分工作,吐出 CSV。脚本任务除了删除文件之外什么都不做。
投入各种 SSIS 登录包和脚本。将“Hello World”日志扔到脚本的第一行,它永远不会被触发。
我所做的:
创建具有完全访问权限的代理,将其链接到新的 Creds 和 SQL 登录名。没有。使 SQL 登录对所有内容都拥有权限,什么都没有。作为新的代理执行帐户和服务帐户运行包。甚至更改了运行 SQL AGENT 服务的帐户(新 SQL 服务器,现在允许将其搞砸)。将包作为 32 位运行。认为它与被设置为“Copy Local = True”的 ScriptTask 引用有关,但并没有改变它。
在投标中工作正常,我在另一个客户的环境中使用了相同的脚本,并且在那里工作正常。我不知道还有什么可以尝试的。有任何想法吗?如果需要,我可以上传代码部分。
我将数据库与 Visual Studio 2017 连接。当我尝试执行查询时,它显示以下错误:
我使用的连接字符串是:
SqlConnection con = new SqlConnection("Data Source=ANUPAM-DESKTOP\ANUPAM;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
Run Code Online (Sandbox Code Playgroud)
我的代码:
public void exicuteDatabaseQuery(String query)
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(query, con);
sda.SelectCommand.ExecuteNonQuery();
con.Close();
MessageBox.Show("Successfull");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
int id = Convert.ToInt32(___Id_.Text);
int number = Convert.ToInt32(___Number_.Text);
String InsertQuery = "INSERT INTO Member (id, number)
values('"+id+"','"+number+"')";
exicuteDatabaseQuery(InsertQuery);
}
Run Code Online (Sandbox Code Playgroud)
数据库浏览器图像:
我们有一个由大约 129 个表组成的 Visual Studio 数据库项目。它是我们内部基于 Web 的 CRM/呼叫中心产品的主要数据库,该产品仍在积极开发中。
我们使用 VS 中的 SSDT 发布在进行更改时部署到实例。我们通过 SQL Express (2016) 在本地开发,还有一个 LAB 环境用于运行 SQL 2014 的性能和负载测试,一个运行 2012 的 UAT 环境,最后部署到运行 SQL 2016 的生产环境。
在发布时生成的脚本的所有环境(生产除外)都非常好,只做更改。生产脚本做了大量的工作。似乎删除并重新创建了更多的表,我知道这些表没有改变(上次部署了 37 个表)。其中一些表的行数以百万计,整个发布需要 25 分钟以上。
如果我重复发布到生产,它会再次删除并重新创建 37 个表。生产数据库确实有复制,我必须在部署之前禁用它(不确定这是否是一个因素)。
我不明白 Production 发布总是想要删除和重新创建表的内容,即使什么都没有改变。我希望得到一些关于在哪里寻找确定为什么 SSDT 认为需要重新创建这些的建议。
使用 Visual Studio Professional 2017 V 15.5.5 和 SSDT 15.1
最近,我一直在努力清理我公司从外部承包商那里收到的一组项目。其中有一个 SSAS 多维数据集,带有关联的数据仓库。
承包商自上而下生成多维数据集,使用模式生成向导从多维数据集生成数据仓库的模式。通常,根据我对 Visual Studio 中 SSAS 工具的了解,您可以通过更改多维数据集来更改数据仓库,然后重新运行架构生成向导以更新数据仓库。我想使用 SSAS 工具维护数据库,以便我们有一个集中的地方来管理多维数据集和数据仓库的架构。
我清理这些项目的目标是让它们在开发人员的本地机器上运行。这将需要在每个开发人员的机器上建立一套全新的独立数据库。我想从 SSAS 工具管理数据仓库架构,所以我想在每次我们建立新开发人员时完全重新生成架构。
我目前不关心数据仓库中的数据或存储过程。我可以完全删除数据仓库并在需要时重新生成它。.dsv但是,删除文件不是一个选项,因为它包含针对由多维数据集定义的表结构的查询。
有没有办法使用架构生成向导重新生成以前生成的架构,而不删除.dsv?
我有一个包含两个数据库项目的 VS 2013 解决方案。
其中之一,我们称之为“worker”,应该部署到大约 10 个不同的生产服务器上。
另一个应该作为“控制器”实例工作,基本上应该在 10 台生产服务器上的“工作人员”数据库上运行不同的存储过程。
因此,为了实现这一点,我在“控制器”内编写了 10 个链接服务器对象的脚本,并调用“工作器”数据库中的不同 SP。
以下是链接服务器脚本的示例:
EXEC sp_addlinkedserver @server = N'PROD1', @srvproduct=N'SQLSERVER', @provider=N'SQLNCLI', @datasrc=N'1.2.3.4\prod1'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'PROD1',@useself=N'False',@locallogin=NULL,@rmtuser=N'aaaaa',@rmtpassword='aaaaa'
GO
EXEC sp_serveroption @server=N'PROD1', @optname=N'rpc', @optvalue=N'true'
GO
EXEC sp_serveroption @server=N'PROD1', @optname=N'rpc out', @optvalue=N'true'
GO
Run Code Online (Sandbox Code Playgroud)
到目前为止,效果很好,并且链接服务器是在控制器 SQL Server 上创建的,我可以使用它们。
但是:
在 SSDT 项目/解决方案中,每当我使用链接服务器对象时,我都会收到损坏的引用。当然,模式不知道链接服务器名称,因为它们仅位于上述脚本中的字符串常量中。
示例:(我自己翻译的信息,不保证完全正确)
警告 14 SQL71562:“过程:[dbo].[SP1]”包含对对象 [PROD1].[db1].[dbo].[SP1] 的未解析引用”。
所以我的问题是,我有从控制器数据库模式到“worker”数据库模式的引用,但我无法使用/插入数据库引用,因为我使用多个不同的引用(10 个生产服务器)来“访问”工作人员的架构...我不想使用“OtherServer”选项向我的项目添加 10 个数据库引用(即使可以,我猜它也不允许向同一数据库项目添加 10 个引用。 ..)
我有一种感觉,应该可以在解决方案中以正确的方式处理链接服务器对象,但我不知道如何解决。
我尝试了亚伦的同义词建议,但是一旦我使用链接服务器的名称,就会遇到同样的问题,导致名称“后面”出现未知对象。
我编辑了问题以使问题更加清晰,并希望任何人都有想法,因为我想要一个干净的解决方案,没有数百条警告消息。
visual-studio sql-server-2008-r2 linked-server ssdt database-projects
visual-studio ×10
sql-server ×6
ssdt ×3
deployment ×2
ssms ×2
errors ×1
ssas ×1
ssis ×1
ssis-2014 ×1
tools ×1
view ×1