none
התחברות ל SQL SERVER RRS feed

  • שאלה

  • שלום, אני משתמש ב SQL SERVER EXPRESS 2008. יש לי DataBase מוכן על המחשב שלי. אני רוצה להשתמש במסד הנתונים הזה דרך מחשב אחר שנמצא ברשת אצלי בבית. למשל שמתוכנה שנמצאת במחשב אחר בבית(שמחובר איתי לאותה הרשת) אני אוכל לגשת לDataBase שנמצא במחשב שלי.

    איך אוכל לעשות זאת? תודה

    יום שלישי 31 יולי 2012 18:42

תשובות

  • אז בסופו של דבר הצלחתי, תודות לכם. אני אפרט את מה שעשיתי כדי שאחרים שיתקלו באותה הבעיה יהיה פתרון מפורט.

    נתחיל עם הגדרות ב  SQL Configuration Manager :

    *בקטגוריית SQL Service: להפעיל את SQL Server ושיהיה על מצב אוטומטי בהגדרות שלו שיהיה על Network Service. להפעיל את SQL Browser ושיהיה על מצב אוטומטי, בהגדרות שלו שיהיה על מצב Local Service.

    *בקטגוריית SQL Server Network Configuration  לאפשר את Shared memory ואת TCP/IP. שם, במאפיינים של TCP/IP לרשום ב IPALL, TCP Port 1433.

    באחד ה IP, לרשות את ה IP של המחשב ברשת שרוצים לתת לו גישה לSQL Server  שלך. Active=Yes ,Enable=Yes, TCP Dynamic port= - , TCP port= 1433.

    * להיכנס ל SQL Server Managment Studio : 

    לחצן ימני על הסרבר, אפשרויות, אבטחה, לבחור באפשרות SQL Server And Windows Authenticatian Mode.

    * צרכים לפתוח ב FireWall את הפורט 1433. לפי המדריך הזה :http://msdn.microsoft.com/en-us/library/ms345343(v=sql.105).aspx

    לאחר כל הפעולות האלו, תנסו להתחבר לשרת דרך מחשב אחר. במקרה והוא כותב את את ההודעה, לדוגמא,

     Login failed for user "BLABLA-PC\Guest' (Microsoft SQL Server Error 18456 תכנסו ל

    SQL Server Managment Studio>> Security >> Logins>> Login name = "BLABLA-PC\Guest"

    כך תצרו הרשאה ותוכלו להיכנס דרך המחשב השני ברשת.

    בהצלחה, יוגב.

    • סומן כתשובה על-ידי YogiBear52 יום ראשון 05 אוגוסט 2012 14:18
    שבת 04 אוגוסט 2012 16:50

כל התגובות

  • ב CONNECTION STRING

    ה

    Data Source=

    צריך להיות שם המחשב או ה IP שלו


    יכול להיות שתצטרך להפעיל את הפרוטוקול של ה TCPIP  ולא רק SHARED MEMORY
    • נערך על-ידי tetitu יום שלישי 31 יולי 2012 18:48
    יום שלישי 31 יולי 2012 18:47
  •          אז אני משתמש בconnecting string  הזה:

                string path = @"Server=192.168.1.15;Database=SQLDataBase.mdf  וזה לא עובד.

    זה לא נראה לי הגיוני, כי אין לו כתובת מדויקת של הDataBase הספציפי שאני רוצה.

    יום שלישי 31 יולי 2012 18:55
  • שלום,

    למיטב הבנתי שם ה Database לא צריך להיות שם הקובץ המלא עם הסיומת mdf

    רק שם ה Database כפי שמופיע ב management studio

    אם אתה רוצה להכין Connection tring אני מציע את הפתרון הבא:

    1. צור קובץ txt ריק 
    2. תשנה את השם שלו לסיומת UDL
    3. כשתפעיל את הקובץ תקבל חלון עם אפשרויות בחירה ובדיקה של ההתחברות לשרת , תזין שם את הנתונים רצוניים שמו שם השרת או כתובת שם ה Database וכדו'
    4. קובץ ה UDL עכשיו יכיל את ה Connection string כפי שבחרת (ניתן לשנות סיומת ולראות את הפרטים בתוך הקובץ)
    5. ניתן גם ללחוץ על Test connection לבדיקת ההתחברות

    בהצלחה,

    נועם

    יום רביעי 01 אוגוסט 2012 05:12
  • אוקי

    ב SQL express  יש לך 2 אפשרויות.

    הראשונה ליצור בסיס נתונים ואז לעשות לו attach (שנראה לי שזה מה שאתה עושה) או ליצור אותו דרך ה server managment ואז לתת לו שם לבסיס נתונים וגם להגדיר משתמשים שיכולים לגשת אליו.

    דבר ראשון שתעשה זה תעלה את ה Server managment אצלך ותראה מה יש לך על ה SQL.

    אח"כ נמשיך בלהגדיר משתמשים ולאפשר גישה באמצעות TCPIP


    ולבסוף כשיהיו לנו את כל הפרטים נוכל להשתמש בקובץ UDL לבדיקות ויצירת connectionstring כפי שנועם אמר(זו גם הדרך שאני משתמש בד"כ).
    • נערך על-ידי tetitu יום רביעי 01 אוגוסט 2012 06:14
    יום רביעי 01 אוגוסט 2012 06:12
  • יצרתי קובץ UDL, עכשיו יש לי את הconnecting string.

    איך אני מגדיר ב Server Managment  את הdatabase שיהיה נגיש לכל המשתמשים ברשת הביתית שלי?

    תודה רבה :)

    יום רביעי 01 אוגוסט 2012 18:58
  • ה Connection string מכיל את:

    כתובת השרת - כיצד נגשים לשרת מכל מקום ברשת שלך

    שם ה Database שאליו  נגשים

    פרטי ההזדהות איתם מזדהים לשרת ול database

    כעת עליך לוודא שהפרטים ב Connection string נכונים עבור כל משתמשי הרשת הביתית.
    בזהירות אני אומר שבמידה וזה מתחבר אצלך  יש סיכוי שיתחבר אצל כולם - שווה לנסות.

    האם בחרת בשם משתמש וסיסמא איתם התחברת?
    האם לחיצה על test connection ב UDL  הביאה אותך למצב מוצלח? במידה וכן כל המשתמשים באופן זהה באותו Connection string אמורים להצליח.
    אני אסייג את דברי ואומר שכיוון ואין לנו את הפרטים של ה Connection string  אנחנו לא יכולים לדעת מה עוד נדרש להגדרה.

    בכל אופן לעצם שאלתך,  בחלון הניהול (managment studio )  יש ספריה בשם Security  ותחתיה  Logins

    Login הוא למעשה שם משתמש וסיסמא (בניהול SQL Server  או של Windows )

    ע"י ניהול ה Login תוכל לקבוע מי מורשה להתחבר לDatabase ומה מותר לו לעשות שם.

    תוכל לקרוא על כך כאן: http://msdn.microsoft.com/en-us/library/aa337562.aspx

    מקווה שעזרתי,
    נועם

    יום רביעי 01 אוגוסט 2012 20:45
  • קודם כל ממש תודה על התגובות המהירות שלך.

    הtest connection עובד רק מהמחשב שלי, מהמחשב השני ברשת הוא אפילו לא מזהה שהסרבר שלי קיים. לדוגמה כשאני מתחבר מאצלי במחשב שם הסרבר הוא  YOGEV-PC\SQLEXPRESS , וכשאני מנסה להתחבר לאותו הסרבר ממחשב האחר הוא לא מזהה אותו פשוט.

    עוד בעיה היא שבאפשרויות גישה ואבטחה, הוא לא נותן לי אפשרות ליצור משתמש ברשת, ב Login Name הוא מאפשר לי לבחור רק מהמחשב שלי ולא מהמחשב השני ברשת.

    תודה רבה :)

    יום רביעי 01 אוגוסט 2012 21:20
  • אני לא בטוח שמחשב אחר ידע כיצד להגיע ל YOGEV-PC   כלומר שם מחשב - תנסה את הפקודה הבאה ב  Start >Run >CMD במחשב שלא מצליח להתחבר

    ping YOGEV-PC

    האם יש מענה של כתובת IP נכונה ? במידה ולא תנסה לשנות את ה Connection string  לכתובת IP במקום שם מחשב.

    מה לגבי Firewall  האם הוא פתוח ל Port 1433 (ברירת מחדל)   במחשב עליו מותקן ה SQL Server

    מקווה שעזרתי,
    נועם

    יום רביעי 01 אוגוסט 2012 21:56
  • שני המחשבים מזהים אחד את השני כשאני מריץ את הפקודה בCMD.

    פתחתי את FireWall לport  1433 .

    כשאני מנסה לחפש את YOGEV-PC\SQLEXPRESS דרך המחשב השני הוא לא מזהה.

    בUDL הכנסתי במחשב השני את שם ה server :

    tcp:YOGEV-PC\SQLEXPRESS,1433 הוא כתב לי הודעת שגיאה שהוא מזהה את שקיים שרת כזה אבל כנראה אין לו גישה אליו. אך כאשר אני מבצע את אותה פעולה במחשב שלי הוא מצליח להתחבר לשרת.

    סביר להניח שמדובר בחסימת הגישה של הSQL SERVER. באחת מהתגובות שלך שלחת לי קישור שמסביר על הקצאת גישות ב SQL SERVER. כאשר אני מנסה לעשות זאת המחשב לא מאפשר לי לתת גישה למחשבים אחרים ברשת, אלה רק למחשב שלי.

    יש מצב שהבעיה נובעת מכך שהמחשב השני מחובר דרך הרשת לרווטר ולא דרך כבל?

    יש אפשרות שבגלל שאני משתמש בגירסא החינמית (SQLEXPRESS ) אז הוא חוסם לי גישות כך שאני לא יכול להתחבר אליו ממחשבים אחרים?

    תודה רבה, יוגב


    • נערך על-ידי YogiBear52 יום חמישי 02 אוגוסט 2012 19:32
    יום חמישי 02 אוגוסט 2012 19:30
  • תבדוק עם ה server configuration manager

    network configuration

    שה

    tcpip = enabled

    יום חמישי 02 אוגוסט 2012 19:38
  • ה tcpip שלי מופעל. בנוסף פעלתי על פי המדריך הזה :http://msdn.microsoft.com/en-us/library/ms345343(v=sql.105).aspx כך שהפעלתי את הפורט 1433 באפשרות IPALL שבתוך הtcpip.  בנוסף הפעלתי את IP2 על הIp של המחשב השני ועשיתי לו enable.

    למרות זאת הוא לא מצליח להתחבר ומוציא לי את ההודעה : Login failed for user "Yogev-PC\Guest' (Microsoft SQL Server Error 18456 ) l

    בנוסף באפשרויות server configuration manager ב network configuration  יש את האפשרות shared memory. צריך להפעיל אותה ? כי בתיאור שלהם כתוב :

    Shared memory is the simplest protocol to use and has no configurable settings. Because clients using the shared memory protocol can only connect to a Microsoft SQL Server instance running on the same computer, it is not useful for most database activity

    כך שלא צריך להפעיל אותה, אם כן אן לא יש עוד shared memory בקטגוריות אחרות חוץ מהnetwork configuration , צריך לבטל/להפעיל גם אותם?

    תודה, יוגב : )

    יום חמישי 02 אוגוסט 2012 20:36
  • אם ה loginfaild  זה מעולה

    זאת אומרת שהחיבור עובד!

    עכשיו צריך לסדר את ההרשאות

    מכיוון שאתה משתמש ב nt permistions

    אז תצטרך לתת הרשאות למשתמש Yogev-PC\Guest

    או לחליפין שזו השיטה שאני משתמש ואז אני לא מוגבל בשם של המשתמש או בסיסמא שלו

    זה להגדיר משתמש של ה SQL ואז לתת לו את ההרשאות וגישה לבסיס נתונים שלך

    את כל זה אתה יכול לעשות דרך sql server management tool באיזור של ה security

    יום שישי 03 אוגוסט 2012 06:03
  • נסה להתחבר קודם בדיוק באותה צורה עם אותו משתמש ולא עם הרשאות WINDOWS מהמחב המקומי עם ה SQL. תחילה תוודא שאין למשתמש בכלל בעיות הקשורות להרשאות.

    אל תעבוד עם משתמש SA או משתמש אדמין מקומי לצורך הבדיקה למשל אלא משתמש חדש שאתה יוצר ב SQL (ולא במערכת ההפעלה)

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

    לגבי השאלה שלך על Shared Memory אז תוודא ש Shared Memory במצב enabled. בעקרון זה לא קשור מפני שאתה עובד עם פרוטוקול TCP/IP או לפחות אמור לעבוד איתו. Shared Memory משמש להתחברות מקומית.
    http://msdn.microsoft.com/en-us/library/ms187892%28v=sql.105%29.aspx


    signature

    יום שישי 03 אוגוסט 2012 06:35
    מנחה דיון
  • ברוך שובך רונן.

    חסרת לנו :)

    יום שישי 03 אוגוסט 2012 11:19
  • (עשית לי את היום... חשבתי שלא יזכרו אותי כבר)

    תודה :-)
    אני עסוק מאוד על פרוייקט מורכב

    אני אגיע רק בסופי השבוע בחודש הקרוב אני מניח :-)


    signature

    יום שישי 03 אוגוסט 2012 18:46
    מנחה דיון
  • אז בסופו של דבר הצלחתי, תודות לכם. אני אפרט את מה שעשיתי כדי שאחרים שיתקלו באותה הבעיה יהיה פתרון מפורט.

    נתחיל עם הגדרות ב  SQL Configuration Manager :

    *בקטגוריית SQL Service: להפעיל את SQL Server ושיהיה על מצב אוטומטי בהגדרות שלו שיהיה על Network Service. להפעיל את SQL Browser ושיהיה על מצב אוטומטי, בהגדרות שלו שיהיה על מצב Local Service.

    *בקטגוריית SQL Server Network Configuration  לאפשר את Shared memory ואת TCP/IP. שם, במאפיינים של TCP/IP לרשום ב IPALL, TCP Port 1433.

    באחד ה IP, לרשות את ה IP של המחשב ברשת שרוצים לתת לו גישה לSQL Server  שלך. Active=Yes ,Enable=Yes, TCP Dynamic port= - , TCP port= 1433.

    * להיכנס ל SQL Server Managment Studio : 

    לחצן ימני על הסרבר, אפשרויות, אבטחה, לבחור באפשרות SQL Server And Windows Authenticatian Mode.

    * צרכים לפתוח ב FireWall את הפורט 1433. לפי המדריך הזה :http://msdn.microsoft.com/en-us/library/ms345343(v=sql.105).aspx

    לאחר כל הפעולות האלו, תנסו להתחבר לשרת דרך מחשב אחר. במקרה והוא כותב את את ההודעה, לדוגמא,

     Login failed for user "BLABLA-PC\Guest' (Microsoft SQL Server Error 18456 תכנסו ל

    SQL Server Managment Studio>> Security >> Logins>> Login name = "BLABLA-PC\Guest"

    כך תצרו הרשאה ותוכלו להיכנס דרך המחשב השני ברשת.

    בהצלחה, יוגב.

    • סומן כתשובה על-ידי YogiBear52 יום ראשון 05 אוגוסט 2012 14:18
    שבת 04 אוגוסט 2012 16:50