gpt4 book ai didi

sql - 验证 T-SQL 可编程性对象

转载 作者:行者123 更新时间:2023-12-04 06:19:45 27 4
gpt4 key购买 nike

有没有办法验证 SQL Server 2008 中的可编程性对象?

我有一个包含约 500 个可编程对象的数据库,这些对象依赖于其他可编程对象(不仅是表)。

如果我进行一些重构,则很难找到被更改破坏的其他对象。例如,如果我更改参数计数...

数据库的原始状态:

CREATE FUNCTION [dbo].[GetSomeText]() RETURNS nvarchar(max) AS BEGIN RETURN 'asdf' END

/* uses "GetSomeText()" function */
CREATE FUNCTION [dbo].[GetOtherText]() RETURNS nvarchar(max) AS BEGIN RETURN [dbo].[GetSomeText]() + '-qwer' END

现在我进行了一些重构(将参数 @Num 添加到 GetSomeText() 函数):
ALTER FUNCTION [dbo].[GetSomeText](@Num int) RETURNS nvarchar(max) AS BEGIN RETURN 'asdf' + CAST(@Num as nvarchar(max)) END

现在函数 GetOtherText()坏了,因为它正在调用 GetSomeText()没有必需参数的函数。

有没有办法获取有关此错误的信息?

目前我将每个可编程对象编写为 ALTER ,运行alter 脚本,并检查错误。这种方式看起来太复杂了(并且很难在仅 T-SQL 的环境中使用)。

编辑:

感谢您的回答!我知道如何获取依赖项或所有对象的列表。
问题在于检查对象的主体。如果我得到依赖,除了运行 ALTER 之外,还有其他方法可以检查有效性吗?脚本?

最佳答案

也许您可以尝试引入一些自动化数据库开发人员/单元测试。

对于 500 个 SQL 对象,要返回并为它们全部“复古”将是繁重的。最好的方法可能是在需要重构/更改现有 API/创建新 SQL 对象时逐步创建这些测试

然后可以将这些自动化测试作为整体持续集成方法的一部分。请注意给出的示例,您仍然会遇到查找现有依赖项的问题。但是一旦有足够的测试覆盖率,测试应该突出任何引入的破坏性变化。

我创建了一个可能有用的测试工具 - 但还有很多其他的:

http://dbtestunit.wordpress.com/

关于sql - 验证 T-SQL 可编程性对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com