将数据库更改从开发环境迁移到 QA 到生产环境的好方法是什么?目前我们:
问题在于它非常手动。如果开发人员忘记了,它依赖于开发人员记得附加 sql 或同行评审员捕获它。有时,最终发现问题的是测试人员或 QA 部署人员。
第二个问题是,如果两个单独的任务更改同一个数据库对象,您有时最终需要手动协调更改。这可能只是它的方式,但似乎仍然应该有一些“标记”这些问题或其他东西的自动方式。
我们的设置:我们的开发商店充满了具有丰富数据库经验的开发人员。我们的项目非常面向数据库。我们主要是一家 .NET 和 MS SQL 商店。目前我们正在使用 MS TFS 工作项来跟踪我们的工作。这对于代码更改非常方便,因为它将更改集链接到工作项,因此我可以准确地找出在迁移到 QA 和生产环境时需要包含哪些更改。我们目前没有使用 DB 项目,但将来可能会切换到该项目(也许这是答案的一部分)。
我非常习惯于我的源代码控制系统为我处理这样的事情,并希望我的 SQL 也有同样的事情。
我们的开发人员正在处理的数据库太大(有很多数据库对象)。我们必须控制 db 对象的更改(更改管理)。我们公司不能有一个人只负责数据库的变化。所以我们需要一个数据库对象的源安全,类似于标准代码的版本控制,但更多地与数据库相关,可以同步数据库和脚本。什么是最好的。可靠、便宜、实用 - 选择两个:)
source-control sql-server version-control sql-server-2008-r2
我目前正在使用 Tortoise SVN 对 .NET Web 应用程序进行源代码控制。将我们的 SQL Server 存储过程引入源代码管理的最佳方法是什么?我目前使用 VS 2010 作为我的开发环境,并使用 SQL Server Data Tools (SSDT) 连接到外部 SQL Server 2008 R2 数据库。
我过去一直在做的是将 procs 保存到 .sql 文件并将这些文件保持在源代码控制之下。我确定一定有比这更有效的方法吗?我可以在 VS2010、SSDT 甚至生产机器上的 SQL Server 上安装扩展吗?
sql-server-2008 source-control sql-server stored-procedures version-control
如何为 SQL Server 2016 Management Studio 安装 TFS 插件?
源代码管理选项不再在选项列表中,因此现有的解决方法似乎不再有效。
我EXPDAT.DMP使用以下命令生成了一个 Oracle 数据库文件:
exp userid=usr/pass@db owner=own rows=n compress=n
Run Code Online (Sandbox Code Playgroud)
然后我运行以下命令来生成一个包含“创建表...”语句的文件:
imp userid=usr/pass@db full=y indexfile=output.sql
Run Code Online (Sandbox Code Playgroud)
这对于 Create Table 语句非常有用,但我也想要 Create Procedure / Create Function / Create View 源代码。我可以在 .DMP 文件中看到它们,但我还没有找到提取它们的方法。
是否可以从 EXPDAT.DMP 文件中提取此信息?或者我需要使用另一种方法吗?
目的是将源代码导出到可以进行源代码控制的文件中。
SSMS 2012 不适用于 VSS 6。我们安装了现代源代码管理、TFS 2010 服务器。
然后我安装了 Team Foundation Server MSSCCI Provider 2010。但是 SSMS 2012 中源代码控制插件的唯一选择仍然是 VSS6。我的 VS2010 工作得很好,我可以在团队资源管理器中连接到 TFS。
如何在 SSMS 2012 中添加 TFS 作为第二个源代码控制插件?
我试图找出一种方法,让我们在源代码控制下编写的所有随机 SQL 脚本。我已经在数据库项目中使用 SSDT。这不适用于此类脚本。它适用于我们随时间运行的所有其他随机查询。在我们将它们放入存储过程之前。或者其他不适合作为 SP 的脚本。
如何使用 Visual Studio 将我的非 SSDT Sql 脚本置于源代码控制之下?
过去,我的团队有一个政策,任何存储过程修改都需要在两个地方进行注释:
它通常看起来像这样:
CREATE PROCEDURE usp_Test
/*****************************************************************
The purpose of this stored procedure is to get data.
Created by 8kb 2001-01-01
Modified: removed OR clauses from JOIN statement..8kb 2001-06-01
******************************************************************/
AS
BEGIN
SELECT *
FROM t1
JOIN t2
ON t1.colA = t2.colA
-- Removed OR clause..8kb 2001-06-01
-- OR t1.ColB = t2.ColB
END
Run Code Online (Sandbox Code Playgroud)
但是现在有了集成的源代码管理,我可以总结源代码管理中的变化,然后使用比较/差异功能来查看新旧版本之间的差异。
在作为集成源代码控制一部分的存储过程中编写逐行更改注释是否仍然有价值?
当我们向现有表中添加新列时,正确的方法是什么?
例如,我已经有像 Foo1、Foo2、Bar1、Bar2 这样的列。现在我想添加一个名为 Foo3 的新列。
当我想添加具有相似名称的列时,标准方法是什么(如果是这样的话)?
我看到 2 个选择:
为了获得一些参考,我们正在使用数据库项目来控制数据库更改,并为应用程序开发人员提供更好的 GUI 以进行数据库更改。我们使用某种 ORM 与数据库交互,因此没有人使用数据库对象名称查询数据库。
更新: 我在一些现有列上有几个索引。但是名称相似的列(包括我想添加的列)不属于任何索引。