gpt4 book ai didi

sql-server-2008 - SQL Server 2008 View 中允许的最大列数是多少?

转载 作者:行者123 更新时间:2023-12-03 14:34:27 26 4
gpt4 key购买 nike

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

在 SQL Server 2008 中, View 中允许的列数是否有最大限制?从 MSDN 文章(下)我看到每个 Select 语句有 4096 列的限制。然后将其应用于 View 吗?

例子:

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

在这个 View 中我会被限制为 4096 列吗?

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

最佳答案

您不能为一个 View 创建超过 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

使用 1st SP 创建具有 1024 列的表 t1。

使用 2nd 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.

关于sql-server-2008 - SQL Server 2008 View 中允许的最大列数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com