我的SQL Server實例中有幾千個表,我需要開始將舊的棄用數據類型轉換爲新版本(text to varchar(max))。是否可以編寫腳本,以便我可以運行select語句來查找所有這些,而無需手動瀏覽數據庫實例中的每個表? TIA在SQL Server中查找文本數據類型的腳本
回答
SELECT OBJECT_SCHEMA_NAME([object_id]),
OBJECT_NAME([object_id]),
name
FROM sys.columns
WHERE system_type_id IN (35,99);
你甚至可以做到這一點,生成一組命令來更改表:
SELECT 'ALTER TABLE '
+ QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id]))
+ ' ALTER COLUMN ' + QUOTENAME(name)
+ ' ' + CASE system_type_id WHEN 99 THEN 'N' ELSE '' END
+ 'VARCHAR(MAX);'
FROM sys.columns
WHERE system_type_id IN (35,99);
當然你也想要處理可空性等,但這只是一個起點。
我實際上建議避免使用'INFORMATION_SCHEMA'視圖:http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views.aspx – 2012-03-21 17:42:48
試試這個
SELECT OBJECT_NAME(c.OBJECT_ID) TableName, c.name ColumnName,
t.name, c.max_length, c.precision, c.scale
FROM sys.columns AS c
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE t.name = 'text'
ORDER BY c.OBJECT_ID;
爲什麼你當你知道類型是文本時需要max_length,precision和scale嗎?你爲什麼不使用AS或=作爲你的別名?爲什麼你需要連接,當你可以很容易地從sys.columns派生type_id?這個命令對你有什麼好處呢?你爲什麼忽略模式,在不同模式下可能有兩個同名的表? – 2012-03-21 17:41:51
我用通用的方式寫出來演示它。您可以根據需要瀏覽這些表格並獲取更多詳細信息。 – PraveenVenu 2012-03-21 17:46:07
- 1. 使用shell腳本查找函數參數的數據類型 - 文本處理
- 2. 查找但SQL Server數據庫版本
- 3. Bash腳本在給定文件夾中查找文件類型
- 4. 使用SQL腳本在varchar2數據類型中更改SQL值
- 5. SQL Server的腳本來查找建立在特定數據類型上的所有聚簇索引
- 6. 在SQL Server 2008 R2腳本數據缺少腳本嚮導
- 7. 解析SQL Server數據庫的腳本
- 8. MigratorDotNet和SQL Server上的文本數據類型2008
- 9. SQL Server上的數據遷移文本類型
- 10. 用於查找Microsoft SQL Server表中的孤立數據的通用腳本
- 11. jquery中的腳本數據類型
- 12. 正在更新腳本以查找新類型的文件
- 13. SQL Server文本數據類型最大長度= 65,535?
- 14. SQL Server轉換爲文本數據類型
- 15. Sql Server Varchar(max)和文本數據類型
- 16. 生成我的數據庫的數據的SQL腳本(SQL SERVER)
- 17. 在文本文件中查找數據?
- 18. SQL Server數據庫組創建腳本
- 19. SQL Server中具有數字和文本的列的數據類型?
- 20. 如何在appHarbor中運行數據庫sql腳本SQL Server
- 21. 如何在DML(SQL腳本)中從SQL Server 2008.2010導出數據?
- 22. SQL Server大量文本和大量文本的列類型
- 23. SQL Server 2005查找某個數據類型的數據庫中的所有列
- 24. 查找SQL Server服務器數據類型的依賴關係
- 25. sp_xml_preparedocument中的文本數據類型
- 26. 在sql server中找不到SQL_Variant的等效數據類型postgresql
- 27. 不同版本的數據庫和SQL Server;找不到SQL Server
- 28. SQL腳本查找數字值
- 29. 在SQL Server中合併數據類型
- 30. 如何從「SQL腳本」的表名在SQL Server數據庫
真棒亞倫(謝謝你今天回答我的問題)。即使給出改變陳述,我希望我可以給你額外的分數! – ganders 2012-03-21 17:55:22
我試着運行我的轉換,它說我不能將'圖像'數據類型轉換爲varchar(max)或nvarchar(max)。是否應該更改爲varbinary(max)? – ganders 2012-03-22 16:17:56