Database In Recovery

26/08/2015

בעייה שקורית כשמבצעים restart “אלים” לשרת כשהוא באמצע כתיבה או טרנזקציה,ואז כשמעלים אותו מחדש הדטבייס הרלוונטי אינו זמין בקומבו ומופיע בתור In Recovery ב-Object Explorer.מה עושים? כעקרון שום דבר למעט לקוות שהכל בסדר ושלא נגרם שום נזק בלתי הפיך: ממתינים בסבלנות שהמערכת תסיים לבצע Recovery.המהדרין בודקין ב-Error Log כמה אחוז התבצע, כדי שתהיה להם תשובה מן המוכן לבוס קצר הרוח בסלולרי (“נו????….”).אני מעדיף “לשפוך” את ה-Error Log לטבלה זמנית, ולשלוף משם: זה מאפשר לפלטר ולמיין בקלות כדי למצוא את מה שצריכים ביער ההודעות: If Object_ID('tempdb..#T','U') Is Not Null Drop Table #T;Create Table #T(ID Int Identity Primary Key Clustered,...
תגיות: ,
אין תגובות

Linked Server to SQL Azure

19/08/2015

יש כמה דגשים ביצירת Linked Server ל-SQL Database ב-Azure (המכונה במקומנו PAAS).ראשית, הסינטקס ליצירת ה-Linked Server: Use master;Go Exec master.dbo.sp_addlinkedserver @server = N'MyLinkedServer', @srvproduct=N'', @provider=N'sqlncli', @datasrc=N'SQLAzureServer.database.windows.net', @catalog=N'MyDB';Exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MyLinkedServer',@useself=N'False',@locallogin=NULL,@rmtuser=N'MyLogin',@rmtpassword='MyPassword';Go MyLinkedServer – השם של האובייקט שניצורSQLAzureServer.database.windows.net – שם השרת (תמיד SQL Database יהיה משוייך לשרת)MyDB – שם הדטבייס, ובניגוד למקובל – כאן חובה לציינו.MyLogin – שם ה-Login ב-Azure.MyPassword – הסיסמה ב-Azure. השימוש ב-Linked Server: השימוש הוא כמקובל, יש לציין כמובן את שם הדטבייס בפנייה, וניתן לפנות רק לזה שצויין בהגדרת ה-Linked Server. כלומר- זהו Linked Server לדטבייס ספציפי ולא לכל הדטבייסים בשרת.
אין תגובות

שימוש ב-Synonyms

16/08/2015

נתחיל בסיפור (בפוסט הזה יש הרבה בלה-בלה-בלה ומעט קוד): בחברה שעבדתי בה לפני הרבה שנים הייתה מערכת CRM שישבה על אותו שרת כמו ה-DWH. לא בדיוק Best Practice, אך כפי שציינתי – זה היה לפני הרבה שנים, ומה שהיה נאה אז אינו יאה כיום.באיזשהו שלה הוחלט להעביר את ה-CRM לשרת אחר, וכדי לא לשבש את כל תהליכי ה-ETL שפנו לדטבייס הסמוך (ETL? השתמשנו ב-DTS, למי שתהה כמה זה “לפני הרבה שנים”) יצרו בו בִּמקום טבלאות ה-CRM הישנות Views שפנו דרך Linked Server לשרת החדש. כלומר, אם פעם ה-DTS היה פונה לדטבייס CRM_DB לטבלה Customers_Tbl, כעת הוא פנה לאותו דטבייס...
תגיות: , , ,
תגובה אחת

sys.dm_db_index_usage_stats: האם יש שימוש לאינדקסים

14/08/2015

הפוסט הקודם שלי עסק בפקודות Insert לטבלה מאונדקסת, והראה את המחיר שלהם: הרווח ב-Select ידוע, אך יש לזכור שאנחנו משלמים על כך בכל פקודת Insert/Update/Delete, ויש לבחון שאיננו מחזיקים אינדקסים מיותרים שעולים לנו בתחזוקתם, אך אינני משתמשים בהם ומפיקים מהם תועלת.המקור למידע לגבי השימוש באינדקסים נמצא בטבלת המערכת המצויינת בכותרת. צריך כמובן לברר איזו טבלה עומדת מאחורי כל object_id, איזה אינדקס מאחורי כל index_id, מה המבנה של האינדקס וכו’; וכדי לעשות “לונג סטורי שורט”, להלן השליפה עם כל מה שצריך: Declare @TableName Varchar(200)='dbo.MyTbl';With Idx As(Select I.object_id, I.index_id,...

הצגת Insert לטבלה מאונדקסת ב-Execution Plan

13/08/2015

בדרך כלל אנחנו משתמשים ב-Execution Plan כדי לבחון ולשפר פעולות Select, אולי מפני ש-Isert הוא מובן מאליו ואין מה לשפר בו (למעט ה-Select שאותו מכניסים לטבלה), ואולי מפני שבמערכות OLTP ה-Insert-ים הם קטנים ולא מעניינים, בניגוד לפעולות ה-Select שיכולות להיות עתירות משאבים.כך או כך, ניצור טבלה עם מבחר אינדקסים (כולם מיותרים ונועדו לצורך התרגול) ונבדוק כיצד נראית פעולת ה-Insert.הטבלה, כמקובל במקומנו, לפי מבנה טבלת הודעות השגיאה sys.messages: Create Table #T(message_id Int, language_id Int, severity SmallInt, ...
תגיות: , ,
תגובה אחת