搜索字段的所有视图
Search All Views For A Field
我正在使用 SQL Server 2008,我需要找到仍在使用的包含旧命名约定的视图,以便我可以更新字段名称。这些视图都是一个服务器和数据库的核心,但我不太确定执行此操作的语法。这就是我目前所拥有的,它将为我提供数据库中所有视图的列表,但是我如何搜索列表中的每个视图名称以查看它们是否包含名为(仅示例)TaxYear
的字段
Create Table #T (ID Int Identity Not Null, ViewNames VARCHAR(1000)
Insert Into #T (ViewNames)
Select '['+C.Table_Catalog+'].['+C.Table_Schema+'].['+C.Table_Name+']' TableName
FROM Information_Schema.Columns c
Join information_schema.Tables T on C.Table_Catalog = T.Table_Catalog
AND C.Table_Schema = T.Table_Schema
AND C.Table_Name = T.Table_Name
Where T.Table_Type = 'View'
Group By '['+C.Table_Catalog+'].['+C.Table_Schema+'].['+C.Table_Name+']'
我用的是这样的:
SELECT OBJECT_NAME(object_id) as OBJ_NAME
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsView') = 1
AND definition LIKE '%mySearchString%'
order by OBJ_NAME
这将 return 视图的名称。我还使用它通过将 "IsView" 更改为 "IsProcedure"
来搜索存储过程
这个方法需要一点时间,我相信我在代码项目中找到了这个并且已经使用了多次
select table_name, column_name
from information_schema.columns
where column_name like '%taxyear%'
我正在使用 SQL Server 2008,我需要找到仍在使用的包含旧命名约定的视图,以便我可以更新字段名称。这些视图都是一个服务器和数据库的核心,但我不太确定执行此操作的语法。这就是我目前所拥有的,它将为我提供数据库中所有视图的列表,但是我如何搜索列表中的每个视图名称以查看它们是否包含名为(仅示例)TaxYear
的字段Create Table #T (ID Int Identity Not Null, ViewNames VARCHAR(1000)
Insert Into #T (ViewNames)
Select '['+C.Table_Catalog+'].['+C.Table_Schema+'].['+C.Table_Name+']' TableName
FROM Information_Schema.Columns c
Join information_schema.Tables T on C.Table_Catalog = T.Table_Catalog
AND C.Table_Schema = T.Table_Schema
AND C.Table_Name = T.Table_Name
Where T.Table_Type = 'View'
Group By '['+C.Table_Catalog+'].['+C.Table_Schema+'].['+C.Table_Name+']'
我用的是这样的:
SELECT OBJECT_NAME(object_id) as OBJ_NAME
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsView') = 1
AND definition LIKE '%mySearchString%'
order by OBJ_NAME
这将 return 视图的名称。我还使用它通过将 "IsView" 更改为 "IsProcedure"
来搜索存储过程这个方法需要一点时间,我相信我在代码项目中找到了这个并且已经使用了多次
select table_name, column_name
from information_schema.columns
where column_name like '%taxyear%'