‏הצגת רשומות עם תוויות פונקציות. הצג את כל הרשומות
‏הצגת רשומות עם תוויות פונקציות. הצג את כל הרשומות

יום ראשון, 24 באוקטובר 2010

SUSER_SNAME

שלום רב,

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

שאלה:
ברצוני להוסיף בפרוצדורה תנאים לביצוע ע"פ המשתמש אשר מריץ את הפרוצדורה – האם זה אפשרי?
האם ניתן לקבוע ערך DEFAULT לעמודה בטבלה שמשמעו "מי ביצע את הפעולה" ?

תשובה:
פלטפורמת SQL SERVER 2005 מכילה פונקציות מערכת רבות ומגוונות, אחת הפונקציות השימושיות הינה : SUSER_SNAME.

להלן מספר יכולות הפונקציה :
1. הפונקציה מחזירה את ה- log in שמריץ את הפונקציה , לדוגמא:




2. הפונקציה יכולה לתרגם את ה- login security identification number לשם המשתמש , לדוגמא:



ניתן לשלב את הפונקציה כתנאי בתוך פרוצדורה , וניתן לשלב את הפונקציה ב- DEFAULT constraint בתוך טבלה, לדוגמא:


בהצלחה !
http://blogs.microsoft.co.il/blogs/itaib/archive/2010/10/24/suser-sname.aspx

יום רביעי, 30 בספטמבר 2009

הכנסת XML ל- sql server

שלום רב,

איחסון מידע בפורמט XML הינו שכיח מאוד, ונוח מאוד לייצוג מידי אירכי לדוגמא.
ישנם מקרים רבים בהם אנו מנהלי ומפתחי בסיסי הנתונים צריכים להכניס מידע המיוצג בפורמט XML לטבלה ב- sql server .
ישנם מספר אפשרויות לבצע את פיענוח המידע המיוצג על ידי XML והכנסתו ל- SQL SERVER, אחת מהדרכים הינה על ידי פונקציית OPENXML .

להלן דוגמא מ- BOL למימוש הפונקציה והכנסת נתוני XML לטבלה ב- DB:
http://msdn.microsoft.com/en-us/library/aa276847(SQL.80).aspx

בהצלחה!

יום רביעי, 17 ביוני 2009

Table valued parameters

כידוע ישנם חידושים ושיפורים רבים בפלטפורמת ה- sql server 2008, בין החידושים השימושיים ביותר בתחום האפליקיטיבי הינו: Table valued parameters.

ישנם מקרים בהם אנו רוצים להעביר לפרוצדורה יותר מערך אחד, לדוגמא כאשר אנו רוצים להעביר סט של מספרים לפרוצדורה במטרה לשלב את המספרים ב- where לדוגמא.
בגרסאות הקודמות היינו מממשים את הפתרון בצורות שונות (xml, Dynamic SQL, משרשרים כסטרינג עם מפריד וכו'..) .
ב- sql server 2008 ישנו פתרון יעיל ונוח יותר :Table valued parameters המאפשר לפרוצדורה לקבל משתנה מסוג טבלה.

השלבים למימוש הפתרון:
1. Create a table type
2. Create a procedure to receive data for the table-valued parameter
3. Declare a variable that references the type
4. Add data to the table variable
5. Pass the table variable data to a stored procedure

לדוגמא:
USE AdventureWorks;
GO
/* Create a table type. */
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50),
CostRate INT );
GO
/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE usp_InsertProductionLocation
@TVP LocationTableType READONLY
AS
SET NOCOUNT ON
INSERT INTO [AdventureWorks].[Production].[Location]
([Name] ,[CostRate] ,[Availability] ,[ModifiedDate])
SELECT *, 0, GETDATE()
FROM @TVP;
GO
/* Declare a variable that references the type. */
DECLARE @LocationTVP
AS LocationTableType;
/* Add data to the table variable. */
INSERT INTO @LocationTVP (LocationName, CostRate)
SELECT [Name], 0.00
FROM [AdventureWorks].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation
@LocationTVP;
GO
בהצלחה.

יום שני, 15 ביוני 2009

xp_msver

שלום רב,

כידוע פלטפורמת sql server מורכבת גם ממספר רב של פונקציות ופורצדורות מערכת.
אחת מהפונקציות השימושיות הינה - xp_msver .

מטרת הפונקציה להציג מידע חיוני אודות פלטפורמת ה- sql server שבשרת.

לדוגמא:
xp_msver 'ProductVersion' - מציג את הגרסה של הפלטפורמה.

פרמטרים נוספים שהפונקציה יכולה לקבל:

ProductName
Language
Platform
WindowsVersion
ProcessorCount
PhysicalMemory ועוד'.

לפרטים נוספים אודות הפונקציה:
http://msdn.microsoft.com/en-us/library/ms187372.aspx

בהצלחה.

יום שני, 4 באוגוסט 2008

IS_SRVROLEMEMBER

פלטפורמת SQL server 2005 מכילה פונקציות מערכות שימושיות מאוד. בטיפים הקרובים veracity תסקור מספר פונקציות שימושיות ומענייניות.

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

תשובה
אחת הפונקציות המעניינות בפלטפורמת SQL SERVER 2005 הינה - IS_SRVROLEMEMBER.
פרוצדורת מערכת זו מקבלת שני משתנים :
1. שם ה- role
2. Log in
ומחזירה 0 – כאשר ה- login לא שייך לקבוצה,
1 – משויך לקבוצה , ו- null כאשר ה- role לא קיים.

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

בהצלחה !

יום ראשון, 6 ביולי 2008

xp_regread

שאלה:
האם ניתן לקרוא מידע מה- registry ע"י T-SQL ?

תשובה:
כידוע פלטפורמת SQL server יכולה להתממשק עם מערכת ההפעלה ובכך לבצע פעולות שונות גם מחוץ לבסיס הנתונים, לדוגמא :
· קבלת נתוני דיסקים
· שליפת נתוני משאבים , זיכרון, cpu וכו'...
· קריאה וכתיבה ל- event viewer .
· עבודה מול קבצים וכו'...
· ועוד...

עוד יכולת שימושית הינה , התממשקות מול ה- registry.
פלטפורמת SQL server מאפשרת לנו לקרוא נתונים מול ה- registry ע"י קוד T-SQL .

על מנת לקרוא טת כמות ה- CPU בשרת , יש להריץ את הפקודה הבאה:

declare @regOutput varchar(20)

EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment\',
@value_name = 'NUMBER_OF_PROCESSORS',
@value = @regOutput OUTPUT

select @regOutput