อาการ
ถ้าคุณเรียกใช้กระบวนงานที่เก็บไว้ระยะไกลที่มีพารามิเตอร์ผลลัพธ์บนเซิร์ฟเวอร์ที่ลิงก์ผ่านโปรแกรมควบคุม ODBC สําหรับSQL Server โปรแกรมควบคุม ODBC จะไม่สามารถเรียกใช้พารามิเตอร์ผลลัพธ์ และคุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
[Microsoft] [ODBC SQL Server Driver]Restricted data type attribute violation
การแก้ไข
โปรแกรมแก้ไขด่วนที่ได้รับการสนับสนุนจาก Microsoft พร้อมใช้งานแล้ว อย่างไรก็ตาม โปรแกรมแก้ไขด่วนนี้มุ่งหวังเพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น ใช้โปรแกรมแก้ไขด่วนนี้เฉพาะกับระบบที่พบปัญหานี้เท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่ได้รับผลกระทบอย่างร้ายแรงจากปัญหานี้ เราขอแนะนําให้คุณรอการอัปเดตซอฟต์แวร์ถัดไปที่มีโปรแกรมแก้ไขด่วนนี้
หากโปรแกรมแก้ไขด่วนพร้อมให้ดาวน์โหลดแล้ว จะมีส่วน "โปรแกรมแก้ไขด่วนพร้อมให้ดาวน์โหลด" ที่ด้านบนของบทความฐานความรู้นี้ หากส่วนนี้ไม่ปรากฏ ให้ติดต่อฝ่ายบริการลูกค้าของ Microsoft และฝ่ายสนับสนุนเพื่อขอรับโปรแกรมแก้ไขด่วน
หมายเหตุ ถ้ามีปัญหาเพิ่มเติมเกิดขึ้น หรือถ้าการแก้ไขปัญหาใด ๆ ที่จําเป็น คุณอาจต้องสร้างการร้องขอบริการแยกต่างหาก ค่าใช้จ่ายในการสนับสนุนปกติจะใช้กับคําถามและปัญหาการสนับสนุนเพิ่มเติมที่ไม่มีคุณสมบัติสําหรับโปรแกรมแก้ไขด่วนนี้เฉพาะ สําหรับรายการทั้งหมดของหมายเลขโทรศัพท์ของฝ่ายบริการลูกค้าและฝ่ายสนับสนุนของ Microsoft หรือเมื่อต้องการสร้างการร้องขอบริการแยกต่างหาก โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:
http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ฟอร์ม "โปรแกรมแก้ไขด่วนที่พร้อมใช้งาน" แสดงภาษาที่มีโปรแกรมแก้ไขด่วน หากคุณไม่เห็นภาษาของคุณ เป็นเพราะโปรแกรมแก้ไขด่วนไม่พร้อมใช้งานสําหรับภาษานั้น
' โปรแกรมแก้ไขด่วนรุ่นภาษาอังกฤษนี้มีแอตทริบิวต์ของแฟ้ม (หรือใหม่กว่า) ที่แสดงอยู่ในตารางต่อไปนี้ วันที่และเวลาสําหรับไฟล์เหล่านี้แสดงตามเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลไฟล์ ข้อมูลจะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC และเวลาท้องถิ่น ให้ใช้แท็บ โซนเวลา ในเครื่องมือวันที่และเวลาใน แผงควบคุม
MDAC 2.7 Service Pack 1
Date Time Version Size File name
----------------------------------------------------------
12-Nov-2002 02:42 2000.81.9031.12 24,576 Odbcbcp.dll
12-Nov-2002 02:41 2000.81.9031.12 385,024 Sqlsrv32.dll
MDAC 2.8
Date Time Version Size File name
---------------------------------------------------------
15-Jun-2004 00:22 2000.85.1045.0 28,672 Dbnmpntw.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msadds.dll
15-Jun-2004 00:21 2.80.1045.0 512,000 Msado15.dll
15-Jun-2004 00:21 2.80.1045.0 163,840 Msadomd.dll
15-Jun-2004 00:21 2.80.1045.0 184,320 Msadox.dll
15-Jun-2004 00:21 2.80.1045.0 53,248 Msadrh15.dll
15-Jun-2004 00:21 2.80.1045.0 225,280 Msdaora.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msdart.dll
15-Jun-2004 00:21 2.575.1045.0 139,264 Msorcl32.dll
15-Jun-2004 00:21 3.525.1045.0 221,184 Odbc32.dll
15-Jun-2004 00:22 2000.85.1045.0 24,576 Odbcbcp.dll
15-Jun-2004 00:21 2.80.1045.0 442,368 Oledb32.dll
15-Jun-2004 00:21 2000.85.1045.0 503,808 Sqloledb.dll
15-Jun-2004 00:21 2000.85.1045.0 401,408 Sqlsrv32.dll
15-Jun-2004 00:08 2000.85.1045.0 208,896 Sqlxmlx.dll
หมายเหตุ สําหรับลิสต์ของโปรแกรมแก้ไขด่วนที่พร้อมใช้งานสําหรับ MDAC 2.8 ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความใน Microsoft Knowledge Base:
839801แก้ไข: โปรแกรมแก้ไขด่วนพร้อมใช้งานสําหรับ MDAC 2.8
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
ขั้นตอนในการสร้างลักษณะการทํางานขึ้นใหม่
-
ใช้โค้ดต่อไปนี้เพื่อสร้างกระบวนงานที่เก็บไว้SQL Serverที่มีพารามิเตอร์ผลลัพธ์บนเซิร์ฟเวอร์ที่เชื่อมโยง:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
หมายเหตุ คุณไม่ได้รับข้อความแสดงข้อผิดพลาดที่แสดงอยู่ในส่วน "อาการ" ถ้ากระบวนงานที่เก็บไว้ส่งกลับชุดผลลัพธ์
-
ตัวอย่างโค้ดของแอปพลิเคชัน Microsoft Visual Basic ต่อไปนี้จะเข้าถึงกระบวนงานที่เก็บไว้ระยะไกลบนเซิร์ฟเวอร์ที่ลิงก์ ในตัวอย่างโค้ดต่อไปนี้ srv1 และ
srv2 คือสองเซิร์ฟเวอร์ที่กําลังเรียกใช้SQL Server และคุณกําลังสร้าง srv2 เป็นเซิร์ฟเวอร์ที่ลิงก์บน srv1Dim cn As new ADODB.Connection Dim cmd As new ADODB.Command Dim prm As ADODB.Parameter cn.Open "Driver={SQL Server};Server=srv1;UID=sa;PWD=sa_password;" cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc cmd.CommandText = "srv2.pubs.dbo.sample_stored_procedure" Set prm = cmd.CreateParameter("op", adVarChar, adParamOutput, 20) cmd.Parameters.Append prm cmd.Execute Debug.Print prm.Value cn.Close Set cn = Nothing