你不能爲一個視圖中創建超過1024列。
http://msdn.microsoft.com/en-us/library/ms143432.aspx
如何測試:
運行這兩個程序使用列
存儲過程1的n個創建表:
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 @[email protected]
SET @SQL='CREATE TABLE ' + @TableName + '('
WHILE @i<[email protected]
BEGIN
select @j= cast(@i as varchar)
SELECT @SQL= @SQL+'X'[email protected] +' 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 @[email protected]
SET @SQL='CREATE TABLE ' + @TableName + '('
WHILE @i<[email protected]
BEGIN
select @j= cast(@i as varchar)
SELECT @SQL= @SQL+'A'[email protected] +' 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.
更可能的,如果你是來任何地方接近極限,你的數據庫有一些結構性的缺陷。 – HLGEM 2009-10-07 20:38:29
從某種意義上說是一致的,但是,你不知道上下文。我們提供了一個簡化的界面,讓最終用戶創建他們自己的某些表格和列的視圖。理論上,最終用戶可能會創建一些難以管理的觀點。我想確保我們給他們做他們需要的能力,但也要把問題降到最低。 – sugarcrum 2009-10-10 01:22:29