什么是允许在SQL Server 2008中视图列的最大数量?(What is the Max nu

2019-08-17 11:33发布

更多的是好奇的问题,我似乎无法快速找到一个明确的答案的。

在SQL Server 2008中是否有被允许在视图的列数一个最大限制吗? 从MSDN的文章(见下文)我看到有每Select语句4096列的限制。 这会被应用到View?

例:

CREATE VIEW [dbo].[TestView]
AS
SELECT     Column1, Column2 FROM dbo.SomeTableName

我将仅限于4096列对此有何看法?

http://msdn.microsoft.com/en-us/library/ms143432.aspx

Answer 1:

通过寻找权威人士的默认情况下,我想我会尝试...

看来极限是1024列 ,即在SQLServer的9.0(包括“快递”版和企业版)的情况。

    The error message is:
    Msg 4505, Level 16, State 1, Procedure wvTest, Line 3
    CREATE VIEW failed because column 'Yo1' in view 'vwTest'
                       exceeds the maximum of 1024 columns.


Answer 2:

下面是微软链接,完整的详细信息....

http://msdn.microsoft.com/en-us/library/ms143432.aspx

根据这一微软...

Columns per nonwide table  | 1,024 
Columns per wide table     | 30,000


Answer 3:

你不能为一个视图中创建超过1024列。

http://msdn.microsoft.com/en-us/library/ms143432.aspx

如何对其进行测试:

运行这两个程序使用列的n个创建表

存储过程1:

CREATE Proc [dbo].[CreateTableWithNColumnsPrefixX]
(@TableName nvarchar(100),@NumofCols int)
AS
BEGIN
DECLARE @i INT
DECLARE @MAX INT
DECLARE @SQL VARCHAR(MAX)
DECLARE @j VARCHAR(10)
DECLARE @len int
SELECT @i=1
SELECT @MAX=@NumofCols
SET @SQL='CREATE TABLE ' + @TableName + '('
WHILE @i<=@MAX
BEGIN
select @j= cast(@i as varchar)
SELECT @SQL= @SQL+'X'+@j  +' NVARCHAR(500) , '
SET @i = @i + 1
END
select @len=len(@SQL)
select  @SQL = substring(@SQL,0,@len-1)
SELECT @SQL= @SQL+ ' )'
exec (@SQL)
END
GO

存储过程2:

CREATE Proc [dbo].[ CreateTableWithNColumnsPrefixA]
(@TableName nvarchar(100),@NumofCols int)
AS
BEGIN

DECLARE @i INT
DECLARE @MAX INT
DECLARE @SQL VARCHAR(MAX)
DECLARE @j VARCHAR(10)
DECLARE @len int
SELECT @i=1
SELECT @MAX=@NumofCols
SET @SQL='CREATE TABLE ' + @TableName + '('

WHILE @i<=@MAX

BEGIN
select @j= cast(@i as varchar)
SELECT @SQL= @SQL+'A'+@j  +' NVARCHAR(500) , '
SET @i = @i + 1
END
select @len=len(@SQL)

select  @SQL = substring(@SQL,0,@len-1)


SELECT @SQL= @SQL+ ' )'

exec (@SQL)

END

GO

使用1 SP 1024列创建表T1。

使用第二个SP 1024列创建表t2。

现在运行以下查询:

Create view TestView
As
Select * from t1,t2

它会给以下错误

Msg 4505, Level 16, State 1, Procedure TestView, Line 3
CREATE VIEW failed because column 'A1' in view 'TestView' exceeds the maximum of 1024 columns.


Answer 4:

即使在我的SQL Server 2008 R2(10.5版)上有意见1024列的限制。 对不起,我想这是不是这样。

我的客户消费使用数据透视表和数据透视图在Excel中的数据。 Excel是擅长这个,如果你有一个包含适用于所有的行和所有列,包括厨房水槽数据仓库视图喂养它。 但SQL Server不能存储超过1024列的观点,这是一个真正的痛苦。

现在,我要教我的客户手动编辑Excel中的数据连接属性背后的SQL语句。 什么样的恶梦! 他们很少得到它。 我们的程序员是聪明的,用户都哑了,这就是为什么我们应该(任何人听微软???)在任何限制进入我们的软件无法建立。 永远。



文章来源: What is the Max number of Columns allowed in SQL Server 2008 View?