Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何列出SQL Server数据库中所有表中的所有nvarchar,每个表的最大长度为?_Sql Server - Fatal编程技术网

Sql server 如何列出SQL Server数据库中所有表中的所有nvarchar,每个表的最大长度为?

Sql server 如何列出SQL Server数据库中所有表中的所有nvarchar,每个表的最大长度为?,sql-server,Sql Server,我试过这个: select TABLE_NAME, COLUMN_NAME from information_schema.columns where data_type = 'nvarchar' and (character_maximum_length = -1 or character_maximum_length = 3000) order by TABLE_NAME, COLUMN_NAME 但我也喜欢返回,对于每个字段,它的最大使

我试过这个:

select 
    TABLE_NAME, COLUMN_NAME
from 
    information_schema.columns 
where 
    data_type = 'nvarchar' 
    and (character_maximum_length = -1 or character_maximum_length = 3000)
order by 
    TABLE_NAME, COLUMN_NAME

但我也喜欢返回,对于每个字段,它的最大使用长度。我该怎么做呢?

一点动态SQL就可以实现这一点。由于您使用的是SQL Server 2016,因此我们需要在此处使用旧的FOR XML PATH解决方案,而不是新的STRING_AGG函数:

声明@SQL nvarcharMAX, @CRLF nchar2=NCHAR13+NCHAR10; SET@SQL=stuffle选择@CRLF+N'UNION ALL'+@CRLF+ N'选择N'+QUOTENAMEs.[name],+N'作为SchemaName,'+@CRLF+ N'N'+quotename.[name],+N'作为表名,'+@CRLF+ N'N'+quotename.[name],+N'作为列名,'+@CRLF+ N'MAXLEN'+QUOTENAMEc.[name]+N'AS MaxLength'+@CRLF+ N'来自'+quotename.[name]+N'.+quotename.[name] 从sys.s 在s.schema\u id=t.schema\u id上连接sys.t表 连接t.object\u id=c.object\u id上的sys.c列 在c.system\u type\u id=ct.system\u type\u id上连接sys.types ct 其中ct.[name]=N'nvarchar' 和c.max_长度,单位为3000,-1 对于XML路径N,键入.value'/text[1]','nvarcharMAX'+N';',1,13,N PRINT@SQL-你的调试朋友 EXEC sys.sp_executesql@SQL;
你为什么要这样做?这闻起来像是一个。你有467列这样的长度吗?老实说,我认为设计阶段出现了一些问题。将db的副本移动到开发环境中,然后运行alter列。您将很快发现由于截断导致的失败。@markzzz这是因为我试图找出真正的问题是什么,即设计。没关系,我现在知道了,但我确实需要知道版本。@Larnu Microsoft SQL Server 2016,13.x