1
我有Sybase版本10.0.1.3960和'繼承'非常大的數據庫。我試圖授予特權所有表到單個用戶。Sybase中的表太多,怎麼處理
問題是有很多的表,681表是準確的!
手動寫入查詢的表太多,所以我生成了sql的主動方式。麻煩的是,編程生成太長。 Sybase具有32767(2^15-1)的限制VARCHAR
,並且查詢比這更長。我試着定義一個LONG VARCHAR
,但我一直收到一個錯誤。
我在我的繩索末端,我該如何做這項工作?
DECLARE @login VARCHAR(255)
DECLARE @payload VARCHAR(32765) -- <-- too few characters, too many tables
SELECT @login = 'myUserLogin'
SELECT @payload = Result.Payload FROM (
SELECT LIST(tbl.ApplicableAsset, ';\n') AS 'Payload'
From (
SELECT 'GRANT SELECT ON ' + name + ' TO ' + @login +'' AS 'ApplicableAsset'
FROM sysobjects
WHERE type='U'
) AS tbl
) AS Result
EXECUTE (@payload)
寫入它作爲一個循環爲每個表復位@payload。我不是遊標的忠實粉絲;但是這可能只是時間來使用它......或者將每個select寫出到臨時表中,然後從中選擇並遍歷每一行......這裏有很多選項。 – xQbert
我寧願循環...只是因爲它很安靜直接向前;) – frlan
你嘗試過使用'text'或'long nvarchar'嗎? –