相关疑难解决方法(0)

TSQL:获取最后查询

有没有办法获取最后几个查询的SQL文本?

我正在使用Microsoft SQL Server 2005

sql t-sql history

55
推荐指数
2
解决办法
8万
查看次数

如何确定任意一块T-SQL所需的参数?

基本上,我正在寻找一个相当于SqlCommandBuilder.DeriveParameters任意T-SQL的工具.

例如,此查询需要一个参数:

SELECT @Foo [Foo], '@Bar' [Bar], @Baz [Baz]
Run Code Online (Sandbox Code Playgroud)

我基本上需要提取:

new[] { "Foo", "Baz" }
Run Code Online (Sandbox Code Playgroud)

从上面.我可以构建一个SQL解析器,但我有一个到SQL服务器的开放连接,所以我更愿意使用现有的选项.


编辑:

是一个办法做到这一点,因为SQL Server商业智能开发工作室是能够做到这一点非常成功.


编辑2:

SQL BIDS正在执行此命令以描述结果:

exec sp_executesql N'SET FMTONLY OFF;SET FMTONLY ON;SELECT @Foo [Foo], ''@Bar'' [Bar], @Baz [Baz]',
    N'@Foo sql_variant,@Baz sql_variant',
    @Foo=NULL,@Baz=NULL
Run Code Online (Sandbox Code Playgroud)

这解释了它如何确定列,但它可能只是字符串解析来获取参数...

.net c# t-sql reflection

11
推荐指数
1
解决办法
1207
查看次数

获取由 SELECT 语句访问的表的列表

我有数百个 SQL select 语句存储在数据库表的一nvarchar列中。

对于每个 select 语句,我需要找出它们从哪些表中读取。我需要以编程方式执行此操作(例如使用 T-SQL)并将访问表的列表存储在数据库表中。

我通过调用存储过程开始执行此操作sp_describe_first_result_set。它只能部分起作用。

例如:

EXEC sp_describe_first_result_set  
  @tsql = 'SELECT 
               a.code, b.customer_name
           FROM table_a a 
           INNER JOIN table_b b ON a.code = b.code
           WHERE NOT EXISTS (SELECT 1
                             FROM table_c c
                             WHERE a.code = c.code)',
  @params = null, 
  @browse_information_mode = 2
Run Code Online (Sandbox Code Playgroud)

这会返回source_tabletable_atable_b但不是table_c

我需要访问表的列表。

关于我如何实现这一目标有什么想法吗?

t-sql sql-server

3
推荐指数
1
解决办法
2717
查看次数

标签 统计

t-sql ×3

.net ×1

c# ×1

history ×1

reflection ×1

sql ×1

sql-server ×1