我有一个相当大的数据库项目,其中包含九个数据库和一个具有相当大架构的数据库。
这个项目需要大量的时间来构建,我正准备把我的头发拉出来。我们希望控制我们的数据库源,但是很难让其他开发人员在签入之前使用该项目并构建数据库项目,因为构建需要很长时间。
这严重影响了我们的工作,所以我正在寻找替代方案。也许可以用 Redgate 的 SQL 比较来做些什么?我认为这里唯一的缺点可能是它不验证语法?任何人的想法/建议将不胜感激。
我有一个从 Visual Studio 2010(Oracle 开发人员工具)连接到的 Oracle 数据库。我现在在“服务器资源管理器”窗口中有数据库,可以看到所有表、视图、函数等。
现在我想在我的数据库项目解决方案中包含所有这些对象(我想使用 TFS 的版本控制,这就是我想要在我的解决方案中包含所有对象的原因)。我可以用鼠标右键单击一个单一的功能,然后选择“生成创建脚本以项目”,那么它会做我想做什么,它在数据库项目的“功能”文件夹中创建一个新的脚本,使用相同的名称作为函数。
问题:
如果我选择两个或多个函数并使用“为项目生成创建脚本”函数,那么我必须为脚本选择一个名称,它将在一个脚本中编写所有函数。但我想要每个脚本一个文件。
问题:
是否可以从 oracle 数据库中导出所有对象并将它们作为脚本导入到 Visual Studio 数据库项目中?
如果我使用不同的驱动程序(devart),那么我就可以做到,但是我们想使用 ODT,我在那里找不到完成该任务的简单方法。
编辑:刚刚注意到,devart 项目与源代码管理不兼容,所以我们绝对必须使用 ODT。
一直在寻找这个问题的答案大约一个小时,但似乎找不到任何对我有帮助的东西。
我正在创建一个新的数据库项目Adventure Works(只是作为我自己的测试),并且Schema names似乎没有复制。我已选择在文件名中包含架构名称的选项,但这仍然没有任何作用。
有人可以让我知道我做错了什么吗?请参见下图(左侧的数据库是我正在复制的数据库,您可以看到架构,但您在右侧看不到它?)

谢谢!
麦克风
我有一个 Visual Studio 数据库项目,关于此类项目的文档似乎很少且粗略。
问题:我想重命名一个列。
问题:我想要重命名列的表中有数据,因此每次生成脚本时,我都会得到这段代码,该代码会导致脚本崩溃,因为表中有数据。
IF EXISTS (select top 1 1 from [dbo].[res_file_submission])
RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题,而且我真的不相信删除这一行就是答案,我已经取消选择“如果可能发生数据丢失,则阻止增量部署”选项,但这似乎没有什么区别。
更新:该列有一个约束,这似乎是原因。
我在 VS2015 中的解决方案中添加了一个新的 SQL Server 数据库项目。我将所有表格添加到该项目中。
我现在正在尝试弄清楚如何最好通过 UI 将外键添加到项目中。
我在表设计器中,在右侧单击外键,然后添加新的。这添加了一个新的外键,但是当我转到它的属性时,我无法设置列和表。一切都变灰了。
T-SQL 看起来像这样:
CONSTRAINT [FK_Product_ToTable]
FOREIGN KEY ([Column]) REFERENCES [ToTable]([ToTableColumn])
Run Code Online (Sandbox Code Playgroud)
我知道我可以简单地将参数替换为 T-SQL 窗格中的正确信息,但是有没有办法完全通过 UI 来完成此操作并让 T-SQL 自行更新?
database sql-server database-project visual-studio visual-studio-2015
我有一个新的 .net Core 2.0 Web API 项目(在 Visual Studio 2017 版本 15.3.5 中),如果我添加一个新的数据库项目,我将无法构建解决方案。
错误 MSB4019:未找到导入的项目“C:\Program Files\dotnet\sdk\2.0.0\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。
我尝试了各种解决方案
那么为什么我可以将一个数据库项目添加到一个普通的 API 项目中,并且一切正常,但不能添加到 .net 核心项目中呢?
数据库项目是否不适用于 .net Core?我已经搜索了这方面的信息,但很抱歉我找不到它。
我不知道该怎么做。希望有人能帮忙。
我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时它可以工作,但是当我部署 dacpack 时我得到 SqlException: Login Failed for user 'MyUser'
我在本地主机上安装了 SQL Server 2016,同时启用了 Sql Server 和 Windows 身份验证。
我在 Visual Studio 中有包含这些文件的 Sql 数据库项目:
MyUser.sql [构建操作=构建]
CREATE USER [MyUser] WITH Password='$(MyUserPassword)';
Run Code Online (Sandbox Code Playgroud)RolesMembership.sql [构建动作=构建]
ALTER ROLE [db_datareader] ADD MEMBER [MyUser]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [MyUser]
Run Code Online (Sandbox Code Playgroud)我构建它并使用命令行部署创建的 dacpac:
SqlPackage.exe /Action:Publish
/SourceFile:"MyDatabase.dacpac"
/Profile:"MyDatabase.publish.xml"
/v:MyUserPassword=c2Aaaaaaaaaaaa`
Run Code Online (Sandbox Code Playgroud)当我在 sql management studio 中执行此脚本时,它会起作用。但是当我使用 SqlPackage 部署它时,它会导致
SqlException: 用户“MyUser”登录失败
编辑:
我调查了生成的 sql 脚本,其中包括REVOKE CONNECT:
CREATE USER [MyUser] …Run Code Online (Sandbox Code Playgroud) sql-server database-project dacpac sqlpackage sql-server-2016
有没有一种方法可以在运行时导出 SQL Server 数据库项目 (Dacpac) 中的数据库引用?
我们正在构建一个使用 Dacpac 来部署数据库对象的产品。
我们的产品实施团队还使用 Dacpac 项目,方法是将数据库引用添加到产品 Dacpac 文件,然后将他们自己的附加对象添加到项目中。
我们面临的问题是 - 每次实现需要指向较新的产品发布版本时,必须手动更改实现 dacpac 中的父 dacpac 引用以引用新产品 dacpac 的新文件路径(在新版本)。我们在每个实施中都有多个实施团队和多个数据库项目。
有没有什么方法可以在运行时使用变量或参数或类似的东西导出数据库项目中的数据库引用(*.dacpac)?
我有一个 SQL Server 数据库项目 (VS2017),在项目属性中,SQLCMD 变量选项卡如下所示:
问题:我可以创建一个 SQLCMD 变量并为其设置一个默认值和一个本地值。有什么不同?
注意:我目前确实在我的项目中使用 SQLCMD 变量,所以我想我知道它们是如何工作的,但我无法理解这种区别。根据我可以找到的文档(突出显示是我的):
在 SQL Server 数据库项目中,您可以利用 SQLCMD 变量提供用于调试或发布的动态替换。您输入变量名称和值,在构建期间,这些值将被替换。如果没有本地值,将使用默认值。通过在项目属性中输入这些变量,它们将自动在发布中提供并存储在发布配置文件中。您可以通过加载值按钮将变量的项目值拉入发布。
所以看起来:
这对我有什么帮助?设置两个值似乎没有意义,那么为什么我们需要两个不同的值呢?
在我的项目中构建我的项目时出现以下错误databaseB。该数据库引用 master、msdb 以及其他数据库:databaseA和databaseAsynonyms。
databaseB使用来自 的同义词(链接服务器)databaseA。
构建返回以下错误:
SQL71501:计算列:[bi_tb_sales].[v_board_digital_inventory].[dim_panel_revenue_branch] 包含对对象的未解析引用。该对象不存在或引用不明确,因为它可能引用以下任何对象:[dbo].[bi_tb_sales_dim_panel]。[dim_panel_revenue_branch]、[dbo]。[bi_tb_sales_dim_panel]。[p]::[dim_panel_revenue_branch] 或 [dbo].[bi_tb_sales_dim_site]。[p]::[dim_panel_revenue_branch]。
截屏:
我尝试了https://social.msdn.microsoft.com/Forums/sqlserver/en-US/152759ac-8f03-471c-b79c-49f605fe12ba/unresolved-references-and-synonyms?forum=ssdt上列出的以下 6 个修复程序)但它并没有解决问题。
还有其他建议吗?
database-project ×10
dacpac ×2
sql-server ×2
asp.net-core ×1
database ×1
import ×1
oracle11g ×1
sql ×1
sqlpackage ×1