我们大量使用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