回答

收藏

您是否应该将SQL存储过程存储在源代码管理中?

技术问答 技术问答 255 人阅读 | 0 人回复 | 2023-09-14

在开发具有许多存储过程的应用程序时,是否应该将它们存储在某种源版本控制系统中(例如源安全,TFS,SVN)?如果是这样,为什么?是否有使用SQL: z- n% s) G8 V
Server Management Studio进行操作的便捷前端方法?, z  ]5 _  @8 k5 Q  [* C
               
4 J4 @4 n& U! u+ g解决方案:. }+ c& i* V3 y
                , |9 e* T* M( H& @# E
( p0 C2 C: K9 `/ G8 R( y/ E

1 n" `/ G8 \4 c+ F% A                是的。所有代码都应存储在源代码管理中。% ?4 p8 b* y( F) V3 ?% D+ N+ I' l* \
简而言之,代码就是代码,并且会发生错误。能够回头看看随着时间的推移发生了什么变化并能够返回到那些变化,这是很好的。
2 u5 R5 F! x: X" E( ?6 f; Q我们必须手动将其添加到源代码管理系统中,但是您可以为Sql
/ E4 u# t( L7 |# RServer管理系统创建附加组件。我从未创建过一个可以自动将其添加到源代码管理中的工具,但是我想您可以。另外,所有代码都存储在sql表中,因此理论上您可以创建一个过程或某种要通过表的东西来检索所有代码并自动提交。
: z2 ^1 `& o1 o: b更新:我将始终编写额外的代码来检查代码是否存在以及是否没有创建填充程序,然后实际脚本执行并更改程序。1 u8 k( Q9 h$ s, a
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE
3 o$ u, m% n3 g7 @2 Gid = OBJECT_ID(N'[dbo].[SomeStoredProcedure]') AND ) a% C! E. Q, {
OBJECTPROPERTY(id,N'IsProcedure') = 1)" o# @. o5 u  S3 l! d7 E+ {* [+ F6 |% N
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[SomeStoredProcedure] AS/ o/ D! [. T& m0 U
SELECT ''SPROC Template''': c5 y# S4 k) G+ r3 g' a
GO7 N' a9 r8 Z6 V7 J3 A
SET ANSI_NULLS ON, ~, w$ q, x- d' t- z! R8 I1 W8 u0 V
GO
1 u3 A: x: Y0 m9 _; R9 T, S# e8 zSET QUOTED_IDENTIFIER ON
7 v1 a4 T! n# F' XGO2 y3 h3 K4 [( @9 e
ALTER PROCEDURE SomeStoredProcedure
& _0 x3 a3 c( ?, c1 U4 k7 q拖放并重新创建将删除您为其设置的所有用户权限。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则