הבלוג של גרי רשף

01/02/2011

Data type: Sysname

שייך לקטגוריה: Uncategorized — תגים: , — גרי רשף @ 21:16

הופתעתי היום לגלות שיש דבר כזה, והייתי בוודאי עושה מזה מזמן שימוש נאות לו ידעתי: Sysname הוא משתנה מסוג (Nvarchar(128 שנועד לשמור שמות של אובייקטים שונים ב-SQL Server (שמות טבלאות, שמות עמודות, שמות אינדקסים..) שכולם מוגבלים בגודלם ל-128 תווים; ויתרונו בכך שאם המגבלה תשתנה בגרסאות עתידיות – גם הוא ישתנה..

עד כה הייתי שומר את שמות האובייקטים בעמודות Varchar בגדלים שונים כיד הדמיון הטובה עלי באותו זמן (בד"כ 50 או Max..).

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

לטבלה יהיה כמובן שדה Sysname שלתוכו נכניס את שמות כל האובייקטים מ-sys.objects שאורכם 128 תווים (זה יכלול את הטבלה שלנו, אובייקטים של המערכת, וגם טבלאות זמניות – אם יש),

נשלוף את הנתונים מהטבלה,

ונבצע לה Drop:

Declare    @SQL Varchar(Max),

        @Ln Int;

Set        @Ln=128;


Set        @SQL='Create Table '+Replicate('T',@Ln)+'(S Sysname);';

Print    @SQL;

Exec(@SQL);


Set        @SQL='Insert Into '+Replicate('T',@Ln)+' Select name From sys.objects Where Len(name)='+Cast(@Ln As Varchar)+';';

Print    @SQL;

Exec(@SQL);


Set        @SQL='Select * From '+Replicate('T',@Ln)+';';

Print    @SQL;

Exec(@SQL);


Set        @SQL='Drop Table '+Replicate('T',@Ln)+';';

Print    @SQL;

Exec(@SQL);

image

אפשר לשנות את ערכו של Ln@ למספר אחר (למשל- 129) כדי להשתכנע שזה לא עובד..

להגיב »

אין תגובות.

פיד RSS של התגובות על הרשומה הזו טרקבאק קישור

כתיבת תגובה

Fill in your details below or click an icon to log in:

WordPress.com Logo

אתה מגיב באמצעות חשבון WordPress.com שלך. Log Out / לשמור )

Twitter picture

אתה מגיב באמצעות חשבון Twitter שלך. Log Out / לשמור )

Facebook photo

אתה מגיב באמצעות חשבון Facebook שלך. Log Out / לשמור )

Connecting to %s

ערכת עיצוב: Shocking Blue Green. בלוג בוורדפרס.קום.

Follow

Get every new post delivered to your Inbox.

הצטרפו אל 25 שכבר עוקבים אחריו