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

01/02/2011

Data type: Sysname

Filed under: 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 feed for comments on this post. TrackBack URI

כתיבת תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

יצירה של אתר חינמי או בלוג ב־WordPress.com.

%d בלוגרים אהבו את זה: