僅為記錄工作中遇到的問題.
1. 字符串截斷:
SQL server里很多job用於運行DTS,經常會收到系統出錯警報,如:
...String or binary data would be truncated. [SQLSTATE 22001] (Error 8152) The statement has been terminated. [SQLSTATE 01000] (Error 3621). The step failed.
原因:字符串長度不符,如需要插入的表字段數據長度為100,而目標表字段屬性長度為64,則會出現該問題.
解決方法:1. 修改目標表字段屬性,如增加目標表字段長度;2.對插入數據進行預處理,使數據符合目標表格式.
2. 長DBName的使用注意事項
在job的steps中使用Transact-SQL去在某個特定數據執行Transact-SQL命令時,會出現如果如果數據庫命太長,則會被截斷的問題,如:
Use abc_abccccccc_eeeeeeeeee_cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc; exec ....
執行時會出現錯誤:
Database 'abc_abccccccc_eeeeeeeee' does not exist.
原因:自動截斷DBName字符串
解決方法:在Transact-SQL中use table時,注意加上"[ ]",如
Use [abc_abccccccc_eeeeeeeeee_cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]; exec ....