0
我將數據從作爲鏈接服務器連接的cobol數據庫中提取到SQL Server。 我們已經結束了在我們的一個表中的不良數據,我試圖追查違規記錄。具體來說,我們有一封輸入到一年字段的字母,當SQL通過它將數據拉過來時,會嘗試將該列轉換爲數字數據類型。鏈接表中的數據不正確
我相信我需要的是將openquery和cast結合使用來選擇至少具有特定列的所有列作爲varchar,以便我可以檢索特定的違規記錄並擁有該部門。修復錯誤。
我試過以下兩種語法,但都產生錯誤。
select * from [incode]...ctvehl
where VEH_YEAR like '992D'
select * from openquery (incode, 'select cast(* as nvarchar) from ctvehl')
爲清楚起見
linked server name = incode
table name = CTVEHL
Specific offending column = VEH_YEAR
援助,這將不勝感激。
感謝
使用select into語句? – 2014-12-02 22:54:35
我會使用類似'INSERT INTO local_WorkTable(col1,col2,col3)的東西SELECT col1,col2,col3 FROM openquery(incode,'select col1,col2,col3 from ctvehl')''。但是,您甚至可以嘗試通過使用INSERT INTO local_RealTable(col1,col2,col3)來跳過WorkTable SELECT col1,col2,cast(col3 as varchar(23))FROM openquery(incode,'select col1,col2,col3 from從ctvehl')'。 Openquery會將您的查詢傳遞給Cobol系統,該系統似乎無法處理'cast',這會使'cast'在SQL Server上本地運行。 – 2014-12-03 12:26:42
確定與該代碼'創建表local_tempTable ( VEH_VEHICLE_CODE INT, VEH_YEAR VARCHAR(23) ) INSERT INTO local_TempTable(VEH_VEHICLE_CODE,VEH_YEAR)SELECT VEH_VEHICLE_CODE,澆鑄(VEH_YEAR爲varchar(23))FROM OPENQUERY(incode,'選擇VEH_VEHICLE_CODE,VEH_YEAR從ctvehl')我仍然看到這個錯誤OLE DB提供程序「MSDASQL」鏈接服務器「incode」返回消息「[TOD] [ODBC] [GENESIS] VISION:錯誤轉換字段VEH_YEAR字符串'992D'到數字」。 Msg 7330,Level 16,State 2,Line 6 無法從鏈接服務器「incode」的OLE DB提供程序「MSDASQL」中獲取一行。 – 2014-12-03 16:44:29