Microsoft SQL Server

**Microsoft SQL Server** (ההגייה המקובלת בישראל היא אֶס-קְיוּ-אֶל סֶרְוֶר ובארצות הברית סִיקְוֶול סֶרְוֶר) היא מערכת לניהול מסד נתונים במודל היחסי (RDBMS) של חברת מיקרוסופט.

שפת הפיתוח שבאמצעותה מועברות הפקודות למערכת (על ידי כתיבת פקודות או שימוש בממשק גרפי ששולח פקודות באופן סמוי) היא Transact-SQL (TSQL) שהיא מימוש תקן ANSI של שפת SQL משמשת לתשאול וטיפול בנתונים (DML), יצירת טבלאות והיחסים ביניהן (DDL) ותחזוקת המערכת תוך שימוש בתוכניות שירות שונות.

המתחרות העיקריות של SQL Server בשוק מסדי הנתונים הרלציוניים הן תוכנות כדוגמת Oracle, MySQL ועוד; SQL Server ניתנת רק להתקנה במערכות הפעלה ממשפחת Windows של מיקרוסופט.
מאז מהדורה SQL Server 2017 היא ניתנת להתקנה גם ב־Linux ו-Containers של Docker.

המהדורה העדכנית ביותר של SQL Server היא SQL Server 2022.

## מהדורות

הקוד המקורי של SQL Server ששימש במהדורותיו הראשונות קודם לגרסה 7.0 – נקנה מ-Sybase, אך מאז הוא עודכן בגרסאות 7.0 ו-2000, ונכתב מחדש בגרסה 2005. בדרך כלל מדי שנתיים-שלוש יוצאת לאור מהדורה חדשה. בין מהדורה למהדורה יוצאות חבילות שירות (Service Packs) הכוללות תיקוני באגים ושיפורים שונים, וכן תיקונים דחופים (Hot Fixes) לבעיות אבטחה שהתגלו או באגים קריטיים.

## גרסאות ושירותים
לכל מהדורה של SQL Server יש מספר גרסאות בעלויות שונות (לכל גרסה וגרסה) ומשתנות (בהתאם לקונפיגורציה של השרת הפיזי). להלן הגרסאות העיקריות:

### Enterprise
הגרסה המלאה הכוללת את כל האופציות (שחלקן מנוטרל בגרסאות אחרות).

### Developer
גרסה בעלת אותן יכולות כמו Enterprise אך נועדה לפיתוח בלבד בעמדת הפיתוח ולא להתקנה על שרת הייצור.
מובן שבפיתוח בעזרת Developer לגרסת Standard (להלן) יש לשים לב לא להשתמש ביכולות שאינן נתמכות בה.

### Standard
גרסה מוגבלת מבחינת הקונפיגורציה של השרת והיכולות שלה שנועדה לשרתים חלשים יחסית.

למשל- ממהדורת 2012 Enterprise ניתן ליהנות מתמיכה בלתי מוגבלת בליבות ולבצע "הוספה חמה" (מבלי לעצור את ה-Service ולכבות את השרת) של מעבדים וזיכרון פנימי, בעוד שה-Standard מוגבל ל-16 ליבות ולא ניתן לבצע בו "הוספה חמה".

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

במהדורת 2012, גרסה זו משתמשת ב-1GB זיכרון לכל היותר, מוגבלת לנפח אחסון של 10GB, ופועלת על שרתים בעלי 4 ליבות לכל היותר.

### SQL Server Azure

גרסת הענן של SQL Server אפשרה בראשיתה לשכור שירות מבלי להחזיק בשרת פיזי (on premise). הארגון משלם על השירות בלבד. השירות ניתן מחוות שרתים הממוקמות במספר מקומות בעולם, יתרונו בכך שאין צורך לתחזק שרת פיזי (כולל צוות מקצועי), לדאוג לשרידות ולתחזוקה שלו, לשדרג אותו וכו'; אך היותו מחוץ לארגון יכולה לעורר חששות בכל מה שקשור לאבטחה וכן לגבי התלות ברשת האינטרנט.

בהמשך הורחב השירות וכלל את האפשרות ליצור ולאחסן שרת וירטואלי שעליו ניתן להתקין SQL Server שמתנהל כמו התקנה מקומית, כולל ניהול השרת עצמו, למרות שבאופן פיזי הוא אינו נגיש; וכך נוצרה הבחנה בין האופציה הקודמת PaaS (פלטפורמה כשירות, Platform as a Service) לאופציה החדשה Iaas (תשתית כשירות Infrastructure as a Service).

שירות זה מסופק על ידי מיקרוסופט מאז 2009 ומצטרף לשירותים דומים בתשלום שניתנו בעבר על ידי חברות צד שלישי.

## ממשקי עבודה
SQL Server מספק מספר ממשקי עבודה שהשתנו והתפתחו במשך השנים, כאשר המוכרים יותר הם הממשקים הגרפיים המשמשים ככלי העבודה הסטנדרטים למפתחים ולאדמיניסטרטורים (DBA = Database Administrator). הממשק הגרפי עד גרסת 2005 כלל את ה-Enterprise Manager שכלל תצוגת עץ של האובייקטים השונים ויכולת ניהול שלהם, ולו התווסף ה-Query Analyzer ששימש לעבודה ב-TSQL.

בגרסת 2005 אוחדו שני הממשקים לממשק אחד SQL Server Management Studio (SSMS). החל מגרסת 2008 התווספה ל-SSMS אופציית עבודה עם ויז'ואל סטודיו שהוא ממשק הפיתוח הסטנדרטי של מיקרוסופט לכלים השונים (שפות תכנות, כלי BI וכדומה). ממשק עבודה חלופי הוא הפעלת Command Line (שורת פקודה) שהתאפשרה הודות לכלים כמו ISQL, OSQL, SQLCmd (משמאל לימין), ואפשרה הרצת סקריפטים וקובצי Batch (אצווה). מגרסת 2008 ניתן לעבוד עם SQLCmd (SQL Command) דרך ה-SSMS מבלי לעבור לסביבת ה-Command של מערכת ההפעלה. אופציה נוספת לעבודה דרך Command Line הוא שימוש בשפת הסקריפטים PowerShell של מיקרוסופט.

בנוסף לממשקים התקניים של SQL Server, ניתן להפעיל פקודות TSQL בעזרת כלי התממשקות סטנדרטיים כדוגמת ODBC, ו-OLE-DB.
## Services
להבדיל ממערכות לניהול מסדי נתונים כדוגמת אקסס שהן "פאסיביות" וכוללות קובץ שיש להתחבר אליו והרצת הפקודות מתבצעת ב-Client (המחשב ממנו המשתמש מתחבר), הרי ב-SQL Server פועלים מספר Services – תוכנות שירות שרצות דרך קבע בזיכרון של המחשב – ולכן יש לו יכולת להריץ את הפקודות על השרת עצמו שלרוב הוא הרבה יותר חזק מה-Client ולחסוך בכך עומס על הרשת, וכן לתזמן ג'ובים שירוצו במועד גם אם ה-Client כובה או התנתק מהרשת.
תוכניות השירות העיקריות -
* **SQL Server** – "המנוע" של המערכת
* **SQL Agent** – הפעלת הג'ובים (סקריפטים מתוזמנים) ומשלוח התראות עומס ואירועים חריגים
***Full-Text Filter Daemon Launcher** – שימוש באינדקסים הייחודיים של Full Text Search לחיפוש טקסטואלי מתקדם
* **SQL Browser** – "האזנה" לפקודות הנשלחות וניתובן ליעדן
* **SSIS Server** – הפעלת ה-SSIS (כלי ה-ETL)
* **SSAS Server** – הפעלת ה-SSAS (ה-OLAP, מסד הנתונים הרב ממדי)
* **SSRS Server** – הפעלת ה-SSRS (כלי הדוחות של המערכת)

## יכולות וכלים בסיסיים
### מסדי נתונים
בכל התקנה (Instance) של SQL Server יש ארבעה System Databases (מסדי נתונים של המערכת) ויכולת ליצור מסדי נתונים על ידי המשתמשים לפי הצורך, ושבהן נשמר המידע בטבלאות.

דטבייסים אלו (שנוצרו על ידי המשתמשים) כוללים באופן בסיסי קובץ מידע (סיומת mdf) עם הטבלאות, המידע והאובייקטים הקבועים השונים ברמת הדטבייס, וקובץ לוג (סיומת ldf) הכולל טרנזקציות פתוחות וכן טרנזקציות סגורות – בכפוף ל-Recovery Model שנבחר (ניתן על פי הצורך לצבור בקובץ הלוג את כל השינויים – הדלתה – מאז הגיבוי האחרון).
ניתן ליצור מספר קובצי מידע בנוסף לראשי (סיומת ndf) משיקולי חומרה, חלוקת העומס בין הדיסקים השונים וכו'.

מסדי הנתונים של המערכת הם:
# **master**: כולל פרוצדורות, פונקציות וטבלאות מערכת המשמשות את כל הדטבייסים ומותקנות אוטומטית; וכן כאלו שנוצרו על ידי האדמיניסטרטורים של המערכת. בנוסף נשמר בדטבייס זה המידע לגבי ההרשאות השונות ברמת השרת.
# **msdb**: דטבייס זה משמש לאחסון הג'ובים של ה-Agent, חבילות SSIS, קודי CLR ועוד.
# **model**: דטבייס זה הוא "המאסטר" של הדטבייסים, וכל דטבייס חדש יהווה העתק שלו אלא אם כן הוגדר במפורש אחרת.
# **tempdb**: דטבייס זמני שנוצר מחדש בכל אתחול של המערכת ומשמש לאחסון טבלאות זמניות שנוצרות על ידי המשתמשים והמערכת (למשל- בפעולות מיון כבדות).

### טבלאות קבועות וזמניות
ברמה הלוגית - הנתונים נשמרים במסדי הנתונים בטבלאות, שבאמצעותן מיושמת התאוריה של מסדי הנתונים הרלציוניים. הטבלה מחולקת לשורות ועמודות (לעיתים מתייחסים אליהן כאל רשומות ושדות). הטבלאות יכולות להיות קבועות או זמניות, כשבמקרה השני הן קיימות בדטבייס tempdb ונמחקות אוטומטית כשהקישור לשרת (Session או Connection) מתנתק או כשהמשתמש (שיכול להחזיק מספר קישורים) מתנתק – תלוי בסוג הטבלה הזמנית.

ברמה הפיזית - המערכת מחלקת את קובץ (או קובצי) הדטבייס ל-Extents של 64KB, וכל Extent לשמונה Pages של 8KB. לרוב כל Extent מוקצה לטבלה אחרת (או לאינדקס כפי שיוסבר להלן), למעט טבלאות קטנות; ואילו כל Page מוקצה תמיד לטבלה אחת. המערכת דואגת להגדיל את הקבצים על פי מה שהגדיר המשתמש, ולהקצות לטבלאות Extents ו-Pages על פי הצורך.

לטבלאות ניתן ליצור אינדקסים, כאשר אחת משתיים: או שהאינדקסים מאוחסנים **בנוסף** לטבלה (אינדקסים רגילים) או שמדובר בדרך בה הטבלה מאוחסנת (Clustered Index). האינדקסים יכולים לסייע בחיפוש מידע בטבלאות (בדומה לכרטיסיות שהיו מקובלות בעבר בספריות), במיונן, ובהגדרת מפתחות.

בין הטבלאות ניתן ליצור יחסי תלות מסוג "אחת לרבים".

בנוסף לטבלאות במשתמשים הנ"ל יש טבלאות מערכת שמאוחסנים בהם מטה-דאטה, כלומר נתונים על המערכת עצמה, האובייקטים השונים בה, ההרשאות, סטטיסטיקות שונות לגבי ביצועי המערכת (DMV) וכו'.

### סוגי נתונים
לכל עמודה בטבלה וגם כל משתנה בקוד TSQL מוגדר סוג הנתונים שיאוחסנו בו.
יש סוגי נתונים שונים:
# **מספרים** - שלמים בגדלים שונים, ולא שלמים בגדלים שונים וברמות דיוק שונות, וכן אופציה למספור אוטומטי.
# **טקסט** - מחרוזות (אוסף של תווים) באורכים שונים, וביכולת תמיכה בכתיבה בשפות שונות.
# **תאריכים** - תאריכים ברמות דיוק שונות החל מימים וכלה בחלקיקי שנייה, ובתמיכה החל מתחילת המאה ה-20 או מתחילת הספירה וכו', ובנוסף – תוך הבחנה בין אזורי זמן שונים.
# **[[XML]]** - נתון טקסטואלי שהוא עצמו סט של נתונים הכתובים בצורה תקנית (תקן SGML).
# **נתונים בינאריים** - נתונים הנשמרים כמידע בינארי ("ביטים ובייטים") ולכן ניתן לאחסן בהם גם קבצים גרפיים וכיוצא בזה.
# **geography** - ייצוג סטנדרטי של מידע גאוגרפי כמו מדינות, אזורים, יישובים; וחישובים כמו חישוב מרחקים.
# **geometry** - ייצוג סטנדרטי של נקודות, קווים ושטחים במישור; ויחסים ביניהם.
# **hierarchid** - ייצוג סטנדרטי של מידע היררכי כמו עצי מוצר או יחסי כפיפות בין עובדים.

### Views
Views מציינים בדרך כלל פקודות שליפה שנשמרות ללא הנתונים (שנשמרים כאמור בטבלאות). הדבר מאפשר ליצור שליפות מורכבות או סטנדרטיות, לשמור אותן בתור View, ולהשתמש ב-View ללא צורך לכתוב בכל פעם מחדש אותה שליפה ולתחזק את כל הקודים בהן היא מופיעה. בנוסף, זה כלי חשוב למתן הרשאות צפייה סלקטיביות בנתונים (אם רוצים לאפשר למשתמשים מסוימים לצפות רק בחלק מהשורות או העמודות של הטבלאות).

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

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

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

### [[תנועה (מערכות מידע)|טרנזקציות]]
טרנזקציה היא אוסף של פקודות שמתבצעות בשלמותן או אינן מתבצעות כלל, אך בשום מקרה אינן מתבצעות חלקית. למשל, אם הועבר כסף מחשבון אחד בבנק לאחר ויש לעדכן את הטבלה כך שחשבון אחד יזוכה והשני יחויב, נדרש ששתי הפעולות יתבצעו יחד או שלא יתבצעו כלל, ושלא ייווצר מצב אבסורדי בו חשבון אחד זוכה והכסף לא הגיע משום מקום או לא הגיע לשום מקום כי החשבון הנגדי לא חויב בשל תקלה.

ל-SQL Server יש יכולת מוגבלת של קינון טרנזקציות.

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

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

## הרשאות ואבטחת מידע
כדי להתחבר לשרת יש צורך ב-Login (משתמש ברמת השרת). כשאבטחת השרת מוגדרת כ-Windows Authentication בו השרת משתלב בהגדרות של ה-Domain, אזי ה-Logins מוגדרים ב-Active Directory. כשההגדרה היא Mixed Mode (או SQL Server Authentication) ה-Logins (שם וסיסמה) מוגדרים ב-SQL Server עצמו. משמעות הדברים היא שבמקרה הראשון יש להזדהות באמצעות שם וסיסמה או באופן אחר (ביומטרי למשל) עם ההתחברות מהמחשב לרשת, ולאחר מכן ניתן להתחבר ל-SQL Server ללא צורך בהזדהות נוספת מכיוון שאותו Login משמש בשתי הסביבות. במקרה השני יש צורך בהזדהות בכל התחברות ל-SQL Server.

ברמת הדטבייס המשתמש מזוהה עם User המקושר ל-Login שהוא ברמת השרת, וההרשאות ל-User מגדירות באופן ספציפי את ההרשאות ברמת הדטבייס בנוסף למה שהוגדר כבר ברמת השרת. לשם מתן הרשאות ניתן להשתמש ברשימה של Server Roles (ברמת השרת) ו-Database Roles (ברמת הדטבייס) שכל אחד מהם כולל שורה של הרשאות טיפוסיות לתפקיד מסוים, ושיוך Login ל-Server Role או User ל-Database Role יעניק לו את ההרשאות האלו. לכך ניתן להוסיף הרשאות ספציפיות וכן ליצור Database Roles חדשים בכל דטבייס בנפרד (לא ניתן ליצור Server Roles).

ההרשאות ברמת השרת מתייחסות ליכולת ליצור דטבייסים חדשים, להשתמש בג'ובים, לגבות ולשחזר, לשנות הגדרות של השרת ועוד. הרשאות ברמת הדטבייס מאפשרות לשלוף או לשנות נתונים בטבלאות, ליצור אובייקטים כדוגמת פרוצדורות וטבלאות, להשתמש באובייקטים וכו'. באופן כללי ניתן לתת הרשאות (Grant), לשלול הרשאות קיימות (Revoke), ולמנוע במפורש הרשאות – בין אם יש (במישרין ובעקיפין) ובין אם אין (Deny).

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

### גיבוי
בנוסף לכלי גיבוי חלופיים ברמת מערכת ההפעלה (כלומר- מגבים את קובצי הדטבייסים) יש כלי גיבוי מובנה שמאפשר גיבוי מלא או גיבוי "דלתא", בהתאם ל-Recovery Model שהוגדר לדטבייס; ושחזור בהתאם – מלא או לנקודת זמן מסוימת. בנוסף לגיבוי מלא של דטבייס ניתן לגבות חלק מהאובייקטים (עם או בלי הנתונים) על ידי יצירת סקריפט שלהם. החל מגרסת 2008 ניתן לכווץ את קובצי הגיבוי.

### כיווץ
החל מגרסת 2008 התווספה אופציית הכיווץ שמאפשרת לכווץ את גודלם הפיזי של טבלאות ואינדקסים, וכך לחסוך בשטח דיסק ובפעולות IO, במחיר של גידול בעומס על ה-CPU (המעבד של השרת). בנוסף, ניתן אף לכווץ את קובצי הגיבוי.

### שכפול, זמינות גבוהה והתאוששות מתקלות
מספר כלים מאפשרים ליצור עותקים של דטבייסים, לשפר את הזמינות (High Availability) וההתאוששות מתקלות (Data Recovery), בנוסף לגיבוי הנ"ל שנחשב לאיטי (זמן שחזור הגיבויים). העותקים הנוצרים באמצעות הכלים שלהלן יכולים לשמש הן כגיבוי זמין במקרה של תקלה במערכת, הן לעבודה במערכות משנה המנותקות מהמערכת הראשית, והן לחלוקת עומסים כך שהעדכון יתבצע בדטבייס האמיתי והשליפות לצורכי דוחות ותחקור מההעתקים.

בין הכלים ניתן לציין את כלי הרפליקציה שמאפשרים ליצור עותק מסונכרן של הדטבייס, Mirroring שמאפשר החזקת עותק של הדטבייס ולהריץ עליו כל פקודה שמשנה את הדטבייס המקורי, Log Shipping שמאפשר החזקת עותק מסונכרן באמצעות העברת קובצי הלוג וביצוע (בעותק) של השינויים שהצטברו בהם (במקור), וכלי ה-HADR (החל מגרסת 2012) שפותר בעיות שונות של ה-Mirroring מבחינת מהירות התגובה לתקלה.

### ג'ובים – תזמון משימות
ה-Agent הוא ה-Service שמאפשר לתזמן משימות, והוא (ה-Service) אחראי להריץ אותן באופן עצמאי. לרוב הוא זה שיטפל בהרצת תוכניות תחזוקה תקופתיות, פעולות ETL כבדות, ביצוע גיבויים וכו'.

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

### Service Broker
כלי זה שהתווסף בגרסת 2005 מאפשר לעבוד באופן אסינכרוני: בראש ובראשונה לשם העברת הודעות בין יישומים שונים הרצים בו זמנית, אך גם לשם הפעלה א-סינכרונית של פרוצדורות בשיטת "שגר ושכח" – מופעלת פרוצדורה ב-Session נפרד, וזו שהפעילה אותה ממשיכה הלאה באופן בלתי תלוי במועד סיומה ובהצלחתה.

### משלוח מיילים
ל-SQL Server יש יכולת לשלוח מיילים מתוך הקוד. אמצעי זה משמש בעיקר למשלוח התראות תחזוקה (נניח- אם ה-CPU עולה מעל רמה מסוימת), דיווחים על סיום פעולות – כולל סטטוס הצלחה, ועוד.

### Full Text Search
כלי מובנה המאפשר ליצור אינדקס על עמודות טקסט כך שניתן יהיה לבצע חיפושים מורכבים ומשמעותיים תלויי שפה. למשל- אנחנו מחפשים היכן מופיע הצבע "לבן" בהטיות שונות (לבנים, הלבנה וכו') אך לא מעוניינים לקבל תוצאות כמו לבני (פוליטיקאית ישראלית), לבן (אחי רבקה) וכו'.

התמיכה שלו באנגלית נחשבת לטובה, אך בעברית הוא מוגבל יחסית.

### מעקב והתחקות
הכלים הללו כוללים את ה-Trace שמאפשר לבצע מעקב אחר פעולות שונות הקורות בשרת לצורכי תחזוקה (איתור תקלות ועומסים) ואבטחת נתונים (מניעת פריצות ושימוש לא מורשה במידע), ה-Profiler שמאפשר לעקוב אחר הפקודות המורצות והאירועים בשרת – בעיקר כדי לקבל תמונת מצב, וה-Extended Events שהתווסף בגרסת 2008, אמור במשך הזמן להחליף את ה-Profiler, ונהנה מ"חתימה" נמוכה יותר (כלומר- רץ בצד ה-Client ולא על השרת עצמו ולכן העומס שהוא יוצר – זניח).

בנוסף לאלו ניתן להשתמש בטריגרים משני סוגים כדי לעקוב אחר פעילות ושינויים: DML Triggers שמוגדרים על טבלאות ו-Views ומופעילם בעקבות פעולות עדכון, הוספה ומחיקה של שורות; ו-DDL Triggers שמופעלים בעקבות שינויים באובייקטים עצמם – ברמת הדטבייס או השרת.

### שילוב קוד [[Common Language Runtime|CLR]]
החל מגרסת 2005 ניתן לשלב ב-SQL Server פרוצדורות, פונקציות ואגרגציות הכתובות ב-CLR, בקלות רבה יחסית. יש לכתוב קוד מתאים באחד מכלי הפיתוח של .NET, ליצור DLL מתאים, ואותו לשלב במערכת.

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

### כלי [[בינה עסקית|BI]]
התקנה טיפוסית של SQL Server כוללת חבילה של כלי BI:

#### [[SQL Server Integration Services|SSIS]]  (SQL Server Integration Services)
כלי ETL שמאפשר שליפת מידע ממקורות שונים (לאו דווקא SQL Server), עיבודם, וטעינתם (בדרך כלל ל-DWH - Data Warehouse אך לא בהכרח).

#### [[SQL Server Analysis Services|SSAS]]  (SQL Server Analysis Services לשעבר OLAP)
כלי ליצירת מסד נתונים רב ממדי (לא רלציוני) שניתן לתחקר אותו באמצעות שליפה של חיתוכים של המידע ברמות סיכום שונות, הסתעפות (drill down) מסיכום לפירוט שלו, מתן הרשאות צפייה ברמת השורה, ושימוש ב-MDX (שפת שאילתות בדומה ל-SQL המותאמת למסד נתונים רב ממדי).

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

#### [[SQL Server Reporting Services|SSRS]]  (SQL Server Reporting Services)
כלי ליצירה ועיצוב של דוחות, מתן הרשאות צפייה בהם, והפצתם. הצפייה בהם נעשית באמצעות דפדפן כדוגמת אינטרנט אקספלורר, אך ניתן לייצא אותו לאקסל, קובצי PDF ועוד. המידע המוצג בדוחות נשלף בדרך כלל מה-DWH או מה-OLAP.

## קישורים חיצוניים

* 

* אתר קהילת ה-SQL Server הישראלי
* הדף הרשמי באתר Microsoft TechNet
* מדריך למתחיל ב-SQL Server 2012

## הערות שוליים

קטגוריה:מערכות לניהול מסדי נתונים יחסיים
קטגוריה:תוכנה מבית מיקרוסופט