none
התחברות מרוחקת ל - SQL EXPRESS 2008 RRS feed

  • שאלה

  • שלום לכולם

    יש לי אפליקציה WPF פנים אירגונית שצריכה לעבוד מול בסיס הנתונים הנ"ל. כמובן שבמחשב שעליו נכתבה האפליקציה הכל עובד בסדר אבל כאשר אני מתקין אותה על מחשב אחר ברשת אני מקבל את השגיאה "The underlying provider failed on open" . ה DB מותקן על המחשב שלי (SQL Server express 2008 r2), הוא מוגדר ל - windows authentication והפכתי את ה sql server browser service ל enabled. לאחר שעות של נסיונות ביטלתי את ה firewall בתחנות המעורבות אך ללא הועיל.

    ה - connection string בתחנה שהקישור עובד בה הוא(אני משתמש ב Entity framework):

    <add name="DbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=STLDeviceDB;integrated security=True;pooling=False;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>

    כאשר אני מנסה להחליף את הנקודה ב ".\sqlexpress" לשם מחשב שעליו מותן ה DB או ל IP שלו אני מקבל את השגיאה הנ"ל.

    האם למישהו יש מושג איך להתגבר על זה?

    תודה מראש

    יום ראשון 04 נובמבר 2012 14:06

תשובות

  • יכול להיות לזה כמה גורמים:.

    א.;integrated security=True

    זאת אומרת שהוא מנסה לגשת לבסיס הנתונים על שם המשתמש של המחשב המרוחק  כאשר הוא כנראה לא מוגדר בבסיס הנתונים.

    אני בד"כ במקרים כאלה מגדיר MIXED MODE ונותן הרשאות ושם משתמש כבר דרךה security של ה sql

    http://msdn.microsoft.com/en-us/library/ms188670.aspx

    ב. האזנה:

    בדר"כ ה EXPRESS מתקין את עצמו מקומית ולא "מאזין" לתשדורות חיצוניות זאת אומרת שהוא מאזין דרך SHARED MEMORY ולא TCP

    את ההגדרות ניתן לעשות דרך SQL SERVER CONFIGURATION MANAGER

    http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx

    אני רושם באותיות גדולות כי אין לי כוח לעבור בין אנגלית לעברית.

    • סומן כתשובה על-ידי Yoav Eyal יום שני 05 נובמבר 2012 08:01
    יום ראשון 04 נובמבר 2012 14:46
  • נתחיל מהשאלה האחרונה: התשובה היא שכן. אם אתה מתחבר עם משתמש של מסד הנתונים עלייך להזין את השם והססמה. יש צורות רבות לבצע את זה והנפוצה ביותרן היא בשרשרת ההתחברות. (חפש בגוגל sql connection string ותקבל דוגמאות שונות למצבים שונים)

    נחזור למקור...

    אתה מנסה לעבוד עם הרשאות מערכת ההפעלה בין 2 מחשבים שונים? האם הם יושבים תחת אותו דומיין?

    האם המשתמש במערכת אחת באמת זהה (לא רק דומה בשם) למשמש במערכת השנייה?

    * אם עובדים בהרשאות WINDOWS בין מחשבים שונים כדאי לעבוד תחת אותו דומיין קונטרולר

    ** "בדר"כ ה EXPRESS מתקין את עצמו מקומית": אני לא בטוח למה הכוונה אבל אם מדובר על זה שמפתחים אפליקציה ונוצר לנו מסד נתונים חדש מקומי אז מי שמתקין (מייצר) את המסד המקומי הוא ה visual studio ולא ה EXPRESS.

    *** הרעיון ב MIXED MODE הוא שזה מאפשר גם חיבור עם הרשאות מערכת ההפעלה וגם חיבור עם הרשאות משתמשים מקומיים. זה לא קשור לעניין לעניין הססמה בכלום. אם עובדים תחת משתמשים מערכת ההפעלה או תחת משתמש של מסד הנתונים אפשר בשני המקרים לשלוח ססמאות ברשת בעקרון. אבל זה לא ממש הגיוני בדרך כלל כי מאבדים את הרעיון של שימוש בהרשאות משתמש מערכת ההפעלה וניהול של ה דומיין קונטרולר של כל הפניות.

    **** הצעה: אני מחזק את ההצעה לעבוד במצב MIXED MODE. תתקין SSMS במחשב חיצוני ותבדוק קודם שאתה יכול לגשת את השרת ולהתחבר אליו עם המשתמש המתאים. אני ממליץ בשלב ההתחלה להגדיר משתמש מיוחד במסד הנתונים ולא לעבוד עם משתמש של מערכת ההפעלה. רק אחרי שתהיה בטוח שכל החיבור מרחוק צלח תוכל לעבור להגדרות אחרות.


    signature

    • סומן כתשובה על-ידי Yoav Eyal יום שני 05 נובמבר 2012 08:01
    יום ראשון 04 נובמבר 2012 19:02
    מנחה דיון

כל התגובות

  • יכול להיות לזה כמה גורמים:.

    א.;integrated security=True

    זאת אומרת שהוא מנסה לגשת לבסיס הנתונים על שם המשתמש של המחשב המרוחק  כאשר הוא כנראה לא מוגדר בבסיס הנתונים.

    אני בד"כ במקרים כאלה מגדיר MIXED MODE ונותן הרשאות ושם משתמש כבר דרךה security של ה sql

    http://msdn.microsoft.com/en-us/library/ms188670.aspx

    ב. האזנה:

    בדר"כ ה EXPRESS מתקין את עצמו מקומית ולא "מאזין" לתשדורות חיצוניות זאת אומרת שהוא מאזין דרך SHARED MEMORY ולא TCP

    את ההגדרות ניתן לעשות דרך SQL SERVER CONFIGURATION MANAGER

    http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx

    אני רושם באותיות גדולות כי אין לי כוח לעבור בין אנגלית לעברית.

    • סומן כתשובה על-ידי Yoav Eyal יום שני 05 נובמבר 2012 08:01
    יום ראשון 04 נובמבר 2012 14:46
  • האם כאשר מגדירים MIXED MODE צריך להוסיף גם שם וסיסמא ל CONNECTION STRING?
    איזה הרשאה צריך לתת?

    יום ראשון 04 נובמבר 2012 16:04
  • נתחיל מהשאלה האחרונה: התשובה היא שכן. אם אתה מתחבר עם משתמש של מסד הנתונים עלייך להזין את השם והססמה. יש צורות רבות לבצע את זה והנפוצה ביותרן היא בשרשרת ההתחברות. (חפש בגוגל sql connection string ותקבל דוגמאות שונות למצבים שונים)

    נחזור למקור...

    אתה מנסה לעבוד עם הרשאות מערכת ההפעלה בין 2 מחשבים שונים? האם הם יושבים תחת אותו דומיין?

    האם המשתמש במערכת אחת באמת זהה (לא רק דומה בשם) למשמש במערכת השנייה?

    * אם עובדים בהרשאות WINDOWS בין מחשבים שונים כדאי לעבוד תחת אותו דומיין קונטרולר

    ** "בדר"כ ה EXPRESS מתקין את עצמו מקומית": אני לא בטוח למה הכוונה אבל אם מדובר על זה שמפתחים אפליקציה ונוצר לנו מסד נתונים חדש מקומי אז מי שמתקין (מייצר) את המסד המקומי הוא ה visual studio ולא ה EXPRESS.

    *** הרעיון ב MIXED MODE הוא שזה מאפשר גם חיבור עם הרשאות מערכת ההפעלה וגם חיבור עם הרשאות משתמשים מקומיים. זה לא קשור לעניין לעניין הססמה בכלום. אם עובדים תחת משתמשים מערכת ההפעלה או תחת משתמש של מסד הנתונים אפשר בשני המקרים לשלוח ססמאות ברשת בעקרון. אבל זה לא ממש הגיוני בדרך כלל כי מאבדים את הרעיון של שימוש בהרשאות משתמש מערכת ההפעלה וניהול של ה דומיין קונטרולר של כל הפניות.

    **** הצעה: אני מחזק את ההצעה לעבוד במצב MIXED MODE. תתקין SSMS במחשב חיצוני ותבדוק קודם שאתה יכול לגשת את השרת ולהתחבר אליו עם המשתמש המתאים. אני ממליץ בשלב ההתחלה להגדיר משתמש מיוחד במסד הנתונים ולא לעבוד עם משתמש של מערכת ההפעלה. רק אחרי שתהיה בטוח שכל החיבור מרחוק צלח תוכל לעבור להגדרות אחרות.


    signature

    • סומן כתשובה על-ידי Yoav Eyal יום שני 05 נובמבר 2012 08:01
    יום ראשון 04 נובמבר 2012 19:02
    מנחה דיון
  • הצלחתי!!!

    תודה רבה למגיבים!!!

    ולכל מי שנתקל בבעיה הזאת אז ככה (אצלי כל המחשבים מחוברים לאותו Domain):

    * התקנתי INSTANCE חדש של SQL EXPRESS (כלהנסיונות עם הנוכחי כשלו)
    * הגדרתי MIXED MODE AUTHENTICATION ונתתי סיסמא ל sa
    * ב sql server configuration manager פעלתי לפי ההגדרות שנמצאות כאן.

    * הוספתי את ה user id וה password ל connection string.
    * פתחתי את ה port  המתאים ב firewall.

    והכל עובד!

    ושוב תודה רבה!!!
    יום שני 05 נובמבר 2012 08:01