如何查找具有临时表的所有存储过程,函数等,这些临时表的列比填充它们的db列短

时间:2015-11-13 05:37:47

标签: sql sql-server stored-procedures database-schema temp-tables

我们大量使用SQL Server,并且可能仅拥有超过1500-2500个存储过程。我一直在处理大量我称之为新手级别的错误,最近我们为我们的应用程序做了维护工作。

我经常发现人们已经在临时表中定义了一个列,该列比查询的db列短,这在某些条件下执行时会导致截断错误。数据类型不匹配也是如此,因为SQL Server无法隐式转换它们,但对我来说这种情况并不常见。

在我们的软件中,我们从不采用一段原始数据并将其放在较短的临时表中,如LEFT(Name,25)等,因此假设临时表中的任何列都比其填充表列短是错的(在我的特定公司)。

有没有办法扫描具有不匹配的表定义集的临时表的所有数据库对象?

一个例子是这样的,虽然我确定你们都知道我的意思

CREATE TABLE #TNames (
     First varchar(35),
     Middle varchar(1),
     Last varchar(35)
);

INSERT INTO #TNames
    SELECT  
        First, --Names.First is varchar(35) YAY!!!!
        Middle, --Names.Middle is varchar(35) BOO!!!! Bad developer, shame on you for #TNames.Middle varchar(1) 
        Last --Names.Last is varchar(35) YAY!!!!
    FROM 
        dbo.Names

0 个答案:

没有答案