Solved : A network-related or instance-specific error occurred while establishing a connection to SQL Server.
ผ่านไปหลายเดือน หาคำตอบได้แล้วครับ ผมขอถามเองตอบเองเลยละกัน ถามที่ไ่หนๆ ก็ได้แต่กระทู้ร้าง ขอทิ้งคำตอบไว้ให้กระทู้นี้เป็นทางออกให้กับคนที่เจอปัญหาเดียวกัน แล้ว search google มาเจอละกันครับ
นี่คือสิ่งที่ผมได้จากการนั่งค้นหา ลองผิดลองถูก คำอธิบายอาจผิดบ้างบางส่วนนะครับ
ปัญหาเกิดจากชื่อ instance SQL ใน webconfig โปรเจ็ค ไม่ตรงกับชื่อ instance ในตัว SQL service ให้เปลี่ยนชื่อมันซะ
ดูจากรูปครับ
ที่ผมวงไว้ ตรง Datasource นี่แหละ เดิมทีมันเป็น (LocalDB)\v11.0 นี่คือชื่อของ instance sql ที่เราต้องใช้ในการ start service เวลาจะรันเว็บไซดที่เชื่อมต่อกับ SQL ตอนแรกสงสัยว่าทำไมมันเป็น (LocalDB)\v11.0 แล้วตอนเทส run โปรแกรมรันในเครื่องปรกติรันได้แต่พอไป run ผ่าน iis กลับไม่ได้ เพราะตอนเทสตัว VS2012 มันเห็น instance ตัวนี้อยู่คนเดียวเป็น ตัว service sql สำหรับเทสโปรแกรมเท่านั้นไม่สามารถใช้มัน run ผ่าน iis ได้ ผมเลยลง SQL server 2012 (ตัว Express ก็ได้)พอลงเสร็จเข้าไปดูที่ SQL server configuration manager เราจะเห็น Default instance ที่มันกำหนดมาให้แล้ว (ตอน install ใครอยากเปลี่ยนชื่อก็ตามใจ) คือชื่อ SQLEXPRESS
จำชื่อนี้ไว้ดีๆ ครับ เราต้องเอาชื่อนี้ไปเปลี่ยนใน Datasource ที่ webconfig ของโปรเจคเรา เปลี่ยนชื่อ datasource ซะ แพทเทรินตามนี้ครับ ชื่อคอมพิวเตอร์(ของผมคือmts0249) \ ชื่อ instance sqlservice จะได้ตามนี้ครับ mts0249\SQLEXPRESS
เอาล่ะทีนี้เราเปลี่ยน Datasource ของไฟลเครื่องให้ชี้ไปที่ instance SQLEXPRESS แล้ว อันดับต่อไปคือ แอด DB ที่เราใช้อยู่ไปยัง instance SQLEXPRESS ครับ เปิด sql server management manager2012 ขึ้นมา แล้ว login ด้วย ชื่อ datasource ใน webconfig เลยครับ จะตั้งพาสเวิดหรือไม่ก็แล้วแต่ ของผมเป็น windowautentication ครับแบบว่าขึ้เกียจตั้งพาส
attach DB ลงไป
เสร็จแล้วขั้นต่อไปคือ add login สำหรับให้ iis ของเราสามารถ login เพื่อเข้ามาใช้ DB ของเราได้เวลารัน iis ครับ
ชื่อ ตามนี้ครับ IIS APPOOL\ชื่อ Application pool ที่เราเลือกไว้ใน iis
กำหนดสิทธิเข้าถึง DB อย่าลืมเลือก กำหนดสิทธ์ให้เข้าถึง DB อ่านได้เขียนได้ด้วยครับ
สุดท้ายเข้าไปที่ DB file ของเรากำหนด security ให้สิทธิกับ user ของ iis เราด้วยครับ
เสร็จแล้ว ลองรันเทสดูก่อนในเครื่องรอบนึงครับ ผ่านแล้วก็ลองรันใน iis ดูน่าจะผ่านแล้วล่ะ
Date :
2015-02-13 18:19:38
By :
ninjasand
จัดไปครับ
Date :
2015-02-14 08:19:59
By :
mr.win
Load balance : Server 01