יום שני, 28 באפריל 2008

SYNONYM

בעיה:
ב- SQL server 2000 כאשר היינו רוצים לתת כינוי לאובייקט (מסיבות של אבטחה – כאשר לא רוצים לחשוף למשתמש את השם של המקורי של הטבלה, או מטעמי נוחות) - בבסיס הנתונים לא היה פתרון מובנה .
הפתרון העקיף בגרסת 2000 הייתה ע"י יצירת שאילתא שקוראת לטבלה, או לחילופין שימוש בפרוצדורה sp_rename .

האם ל- SQL SRVER 2005 יש פתרון מובנה ?

פתרון:
את היתרונות והיכולות החדשות בפלטפורמת SQL Server 2005 הינה – SYNONYM.
SYNONYM הינה היכולת שלנו כ- DBA לתת כינוי לאובייקט אחר בבסיס הנתונים (טבלה, פרוצדורה, שאילתא, פונקציה).

אופן יצירת ה- SYNONYM:
1. בתוך בסיס הנתונים הרצוי, יש synonyms ß קליק ימני ובחירת new synonyms
2. ונפתח המסך הבא – יצירת ה- synonyms


כמו-כן, ניתן ליצור synonyms גם ע"י פקודות T-SQL :

USE [AdventureWorks]
GO
CREATE SYNONYM [dbo].[emp_syn] FOR
[itaib-pc].[AdventureWorks].[HumanResources].[Employee]


ולאחר-מכן, ניתן להריץ פקודות T-SQL רגילות על SYNONYM , לדוגמא:
--select from the original table
select * from HumanResources.Employee

--select from the SYNONYM
select * from dbo.emp_syn


בהצלחה !!

יום ראשון, 13 באפריל 2008

טיפים וטריקים ב- Management Studio – Open My Database

אחת היכולות החדשות של כלי הניהול של פלטפורמת SQL SERVER 2005 - Management Studio הינה היכולת שלו להתאים את עצמו למשתמש.

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

לדוגמא:

על מנת לפתוח את ה- Management Studio יש להריץ את לדוגמא:

"E:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe"


אך במידה ואתם רוצים שכלי הניהול יעלה אוטומטית בבסיס נתונים מסוים יש להריץ את הקיצור דרך כך:

"E:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe" -d model


בהצלחה !!

פקודת לולאה - GO

בעיה:
לפעמים יש לנו צורך להריץ פקודה מספר פעמים, אם זה לצורך הכנסת מידע מספר פעמים לצרכי בדיקות , ועם זה לצורך מבחני ביצועים.
בגרסאות הקודמות של SQL server הפתרון היחיד היה לכתוב לולאת while , אבל בגרסה החדשה של 2005 יש דרך קלה יותר לבצע זאת !!!

פתרון:
גם בגרסת 2000 וגם בגרסת 2005 הפקודה GO משמעותה הרצת הקוד ב- batch אחד.
אבל ב- SQL Server 2005 יש לנו את האפשרות להוסיף מספר לאחר המילה GO , וכך בעצם להחליט כמה פעמים על ה- SQL להריץ את ה- batch.
לדוגמא:
אם ברצונך ליצור סביבת בדיקות עם טבלה בעלת 1000 שורות , ניתן לכתוב כך:
CREATE TABLE dbo.TEST (ID INT IDENTITY (1,1), ROWID uniqueidentifier) GO INSERT INTO dbo.TEST (ROWID) VALUES (NEWID()) GO 1000
עוד דוגמא לשימוש בפקודת GO :
CREATE TABLE dbo.TEST (ID INT IDENTITY (1,1), ROWID uniqueidentifier) CREATE TABLE dbo.TEST2 (ID INT IDENTITY (1,1), ROWID uniqueidentifier) GO INSERT INTO dbo.TEST (ROWID) VALUES (NEWID()) INSERT INTO dbo.TEST2 (ROWID) VALUES (NEWID()) GO 1000
בגרסה הקודמת – SQL 2000 היינו צריכים כך :
CREATE TABLE dbo.TEST (ID INT IDENTITY (1,1), ROWID uniqueidentifier) CREATE TABLE dbo.TEST2 (ID INT IDENTITY (1,1), ROWID uniqueidentifier) GO DECLARE @counter INT SET @counter = 0 WHILE @counter < counter =" @counter">

זה לא ביג-דיל אבל לכתוב פשוט GO 1000 הרבה יותר קל....