如果您不知道如何去做,您可能需要解析 sql 脚本,然后使用对象模型专门找到 schema=admin && table=table。
选项 1:生成估计的查询计划并从中解析出表引用。如果您使用的是 sql 2005+,则可以将其作为 xml 获取并进行如下查询:
;WITH XMLNAMESPACES (default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
select
t.n.value('./@Database', 'sysname') as DatabaseName,
t.n.value('./@Schema', 'sysname') as SchemaName,
t.n.value('./@Table', 'sysname') as TableName,
t.n.value('./@Column', 'sysname') as ColName
from @x.nodes('//ColumnReference') as t(n)
go
选项 2:
如果您想在客户端执行此工作并拥有 sql2008,请添加对 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.SqlServer.SqlParser.dll 的引用并执行喜欢
SqlScript script = Parser.Parse(@"create proc sp1 as select 'abc' as abc1");
然后你可以处理 script.Xml 并寻找一个节点,我相信你也可以在对象模型中找到它的强类型,因为我在程序集中看到了 SqlTableRefExpression,但我不确定在哪里下钻。