在运行时从SQL Server查询结果显示列的数据类型和大小

Bla*_*lor 9 sql t-sql sql-server sql-server-2005 sqlcmd

有没有办法运行查询,然后让SQL Server管理工作室或sqlcmd或其他东西只显示收到的每列的数据类型和大小.

似乎必须存在此信息才能在服务器和客户端之间传输数据.如果可以显示它对我非常有帮助.

一点背景: 我问的原因是因为我必须与无数遗留存储过程接口,每个存储过程的代码范围为50到5000多行.我不想尝试跟随临时表中的神秘逻辑流进入其他过程,进入字符串连接的eval语句等等.我希望不了解实施情况,只是在工作时会发生什么.不幸的是,遵循逻辑流程似乎是唯一的方法来确定究竟是什么被返回而不试图推断管理工作室工作室的数据字符串表示的实际类型或例如.net中的本机类型.

澄清:我不是在询问如何告诉表格的类型或类似的静态.我很确定像sp_help这样的东西对我没用.我问如何告诉我的SQL服务器类型(即varchar(25),int ...)是什么.此外,无法更改sprocs的实现,因此请在您的解决方案中考虑这一点.我真的希望有一个我错过了某个地方的命令.非常感谢所有人.

更新 我想我真正问的是当结果集来自使用临时表的查询时如何获取结果集的模式.我理解这是不可能的,但是对于这个结论没有多大意义,因为数据毕竟是传输的.以下是可能导致问题的存储过程示例.

CREATE PROCEDURE [dbo].[IReturnATempTable]
AS

Create table #TempTable 
( 
    MyMysteryColumn char(50)
)

INSERT #TempTable (
    MyMysteryColumn
) VALUES ( 
    'Do you know me?' ) 


select TOP 50 * FROM #TempTable 
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 2

对于根据参数返回不同结果集的存储过程,您将采取什么措施?

在任何情况下,您都可以配置 SqlDataAdapter.SelectCommand 以及必要的参数,然后调用 FillSchema 方法。假设可以确定架构,您将获得一个配置了正确的列名称和类型以及一些约束的 DataTable。