כיצד לשנות שם של מסד נתונים של שרת SQL?

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

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

יצירת מסד נתונים:

בחר מסד נתונים כלשהו במערכת הניהול של שרת SQL שלך (SSMS) . אם אין לך, תוכל ליצור אחת על ידי ביצוע הליך זה.

  1. לחץ לחיצה ימנית על " מסד נתונים " ב- "סייר האובייקטים" ובחר באפשרות "מסד נתונים חדש"
  2. חלון יופיע, בחלונית השמאלית
  3. בחר שם מסד נתונים "כללי" בתבנית הימנית ולחץ על "בסדר" . מסד הנתונים ייווצר

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

שיטה 1: שימוש באפשרות שינוי שם SSMS לשם שינוי מסד הנתונים של שרת SQL

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

  1. לחץ לחיצה ימנית על שם מסד הנתונים מחוקר האובייקטים
  2. בחר "שנה שם" , הקלד שם מסד נתונים ולחץ על "הזן"

שיטה 2: שימוש ב- SSMS לשם שינוי מסד הנתונים של שרת SQL

דרך פשוטה יותר לשנות שם של מסד נתונים בדיוק כמו לשנות שם לכל תיקיה בחלונות. אתה צריך להמשיך ככה כדי לעשות זאת. לחץ על מסד הנתונים כדי לשנות את שמו בדיוק כמו שינוי שם של תיקיות Windows.

שיטה 3: שימוש ב- T-SQL לשם שינוי מסד הנתונים של שרת SQL

עבור SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 ו- 2017, פקודה זו עובדת. בצע את ההצהרה הבאה.

שינוי נתונים [מבחן] שנה שם = [מקרי מבחן]

הפלט יהיה "שם מסד הנתונים 'test_cases' הוגדר." כפי שנראה באיור למטה.

אתה יכול להשתמש בפקודה T-SQL להלן כדי לשנות את שם מסד הנתונים אם אתה משתמש ב- SQL Server 2000. עם SQL 2005, 2008, 2008R2, 2012, 2014, 2016 ו- 2017, זה עדיין עובד, אך בשלב מסוים, מיקרוסופט טוען שהוא יבוטל.

שיטה 4: באמצעות ניתוק וצירף שנה את שם שרת SQL

באמצעות תכונת הניתוק והצירוף של SQL Server ניתן להשתמש כדי להסיר תחילה את מסד הנתונים ולהקצות למסד הנתונים שם אחר כשאתה מצרף מחדש את מסד הנתונים. ניתן להשתמש בפקודות T-SQL הבאות לשם כך

ניתוק מסד הנתונים על ידי ביצוע הקוד הבא:

EXEC sp_detach_db 'test', 'true'

התפוקה תהיה כזו

צירוף המאגר.

EXEC sp_attach_db @dbname = לא ', @ filename1 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ filename2 = N'C: \ Program Files \ Microsoft שרת SQL \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

התפוקה תהיה:

שימוש ב- SSMS לניתוק וחיבור נתונים מחדש

ניתן להשיג זאת גם באמצעות SSMS על ידי ביצוע השלבים הבאים.

  1. לחץ לחיצה ימנית על מסד הנתונים, בחר "משימה" ואז לחץ על "נתק"
  2. עכשיו לחץ על "בסדר"
  3. כעת כדי לצרף את מסד הנתונים לחץ לחיצה ימנית על "מסדי נתונים" ב- "סייר האובייקטים" ולחץ על "צרף" . מסך יופיע, לחץ על הוסף. חלון אחר יופיע עם שמות מסדי נתונים בתוכו, כפי שמוצג להלן בחר "בדוק".
  4. אבל אנחנו רוצים להוסיף את זה בתור שם מסד הנתונים שונה "test_cases" אז סוג "test_case" ב "צרף כמו" תיבת. עכשיו ככה. זה ישנה את שם מסד הנתונים שלך.

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

שגיאות שנוצרות בעת שינוי שם מסד הנתונים באמצעות SSMS ועל ידי ביצוע השאילתה:

לשתי השגיאות שהוזכרו להלן שתי תצוגות שונות מכיוון שהן נוצרות תוך שינוי שם מסד הנתונים בשתי שיטות שונות. שגיאה 1 מתעוררת בעת שינוי שם מסד הנתונים באמצעות SSMS והשגיאה השנייה מתעוררת בעת שינוי שם מסד הנתונים באמצעות שאילתה. שתי השגיאות מציגות את אותה ההודעה  "לא ניתן היה לנעול את מסד הנתונים באופן בלעדי לביצוע הפעולה", כלומר השגיאה מתעוררת מכיוון שלמשתמש לא ניתן גישה בלעדית למסד הנתונים לשם שינוי מסד נתונים. אז כדי לשנות את שם מסד הנתונים עלינו להגדיר את מסד הנתונים ל"מצב משתמש יחיד ".

שגיאה 1: שגיאה נוצרת בעת שינוי שם מסד הנתונים באמצעות SSMS

"לא ניתן לשנות את שם הבדיקה. (ObjectExplorer)

מידע נוסף:

שינוי שם נכשל בבדיקת מסד נתונים (Microsoft.SqlServer.Smo)

חריג התרחש בעת ביצוע משפט או אצווה של Transact-SQL.

(Microsoft.SqlServer.ConnectionInfo)

The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)”

Error 2: Error arises while renaming the database using query

 “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

First of all, we will reproduce the above-mentioned error messages for understanding that in which scenario they arise and how to fix them.

  1. Right-click database name from “Object Explorer”
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

אז הגישה הפשוטה ביותר היא להשתמש בפתרון 4 אם רוצים לשנות גם את שם הקובץ. תחילה עליך לשנות את שם הקבצים הפיזיים לפני צירוף הקבצים ואז לציין את הקבצים ששמם כשאתה מחבר מחדש.

יתר על כן, בנוסף לשינוי שמות מאגרי המידע, עליכם גם לבדוק האם קיימות הפניות בקוד היישום שלכם לשם בסיס הנתונים. זה יכול להיות בתוך SQL Server או מחוץ ל- SQL Server.