Sql 如何轻松地为数据库中的所有对象编写脚本以搜索特定列和数据类型

Sql 如何轻松地为数据库中的所有对象编写脚本以搜索特定列和数据类型,sql,sql-server,Sql,Sql Server,摘要: 我需要编写所有数据库存储过程、函数和视图的脚本,以查找“customer_code char(3)”的所有实例。是否有一种简单的方法来编写所有对象的脚本?我有7个数据库服务器,每个服务器有20-30个数据库。我不想打开每个数据库并手动为每个数据库生成脚本,这将花费太长时间 背景: 我们需要解决一个经典问题,类似于W2K。我们在数据库中有一个代码列,即char(3)。这是填充随机生成的字母和数字,以创建一个我们用来识别客户工作的唯一代码。它已经有25年的历史了,我们估计我们还有4-5个月的

摘要: 我需要编写所有数据库存储过程、函数和视图的脚本,以查找“customer_code char(3)”的所有实例。是否有一种简单的方法来编写所有对象的脚本?我有7个数据库服务器,每个服务器有20-30个数据库。我不想打开每个数据库并手动为每个数据库生成脚本,这将花费太长时间

背景: 我们需要解决一个经典问题,类似于W2K。我们在数据库中有一个代码列,即char(3)。这是填充随机生成的字母和数字,以创建一个我们用来识别客户工作的唯一代码。它已经有25年的历史了,我们估计我们还有4-5个月的时间才能完全用完它。我们需要将此列扩展为varchar(10)类型

奖金:
理想情况下,我想要一个解决方案,它还允许我搜索每个数据库的对象,查找并计算“customer_code char(3)”的实例。

我开发了两个应用程序,可能会帮助您:

脚本输出给定数据库中的所有对象。它还具有一个搜索函数,用于搜索所有T-SQL模块中的字符串

有时在实现更改时,我的方法是故意更改或删除要更改的项,并让编译器检测依赖项。在您的场景中,我将重命名
customer\u code
列,并通过调用每个列来检查所有对象对该列的依赖性


应用程序只是这样做的:它在视图、SP等中循环,执行它们中的每一个,并记录错误。您还可以在我的博客上找到一个纯T-SQL解决方案。

RedGate提供了一个免费软件,可以插入到名为SQL Search的management studio中,它可以为数据库中的所有对象编制索引,并非常快速地查找对对象的引用

我发现它是一个非常方便的工具,用于处理以下内容:


要在过程、视图和函数中搜索特定文本,您可以通过syscomments进行搜索。这个简单的查询将只搜索一个数据库,但您可以修改它,使其在服务器上的所有数据库中循环

DECLARE @sSearchString VARCHAR(30)

SELECT  @sSearchString = 'YMDEFF'

SELECT Distinct
    ss.name,
    so.Name,
    SO.Type
FROM sys.objects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) 
    on SO.object_id = SC.ID
INNER JOIN sys.schemas ss
    ON so.schema_id = ss.schema_id
WHERE SC.Text LIKE ('%'+@sSearchString+'%')
ORDER BY SO.Name

“对象”是什么意思?例如,通过查询可以轻松找到具有特定名称和数据类型的列,但这无助于在存储过程中找到变量声明。以前也曾询问过SQL Server中的脚本对象。存储过程、视图和函数。我在搜索中单击了,但所有答案都是“单击数据库,右键单击,生成脚本”。我正在寻找一个更自动的解决方案。搜索结果中的第一个问题提到使用。您对此进行了调查吗?既然您对搜索存储过程(和其他对象)的文本感兴趣,那么这也很重要。谢谢您的回复。SMOscript应用程序是否考虑了列和大小之间的不同间距?e、 g.客户代码字符(3)、客户代码字符(3)等?(我似乎无法正确设置注释的格式,但我的一些列定义有一个空格,一些有几个,一些有制表符,一些有制表符和空格的组合。我想你要么必须搜索customer_代码,要么搜索char(3)。