יום חמישי, 29 ביולי 2010

לאיזה PORT אני מאזין ???

שלום רב,

שאלה:
כיצד אני יכול לדעת לאיזה port האינסטנס של ה- sql server שלי מאזין?


תשובה:
ישנן מספר אפשרויות לזהות מהו ה- Port שה- sql server מאזין אליו:

1.registry - אפשרות ראשונה אשר לא מקובלת אך מאוד יעילה הינה דרך ה- registry של שרת ה- sql server.

SQL 2005 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.\MSSQLServer\
SuperSocketNetLib\TCP\

SQL 2008 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.\MSSQLServer\
SuperSocketNetLib\TCP\



2. xp_readerrorlog - אפשרות שנייה הינה לקרוא את ה- log של ה- sql server.

בעת העלייה של האינסטנס נרשם לתוך ה- Log ה- Port אליו הוא מאזין. על מנת למצוא את הרשומה המתאימה - תחפשו את הערך "Server is listening on".



3. וכמובן האפשרות המקובלת - SQL Server Configuration Manager - תחת אופציית SQL Server Network Configuration - ניתן לראות את מספר ה- Port תחת הגדרות ה- tcp\ip.


בהצלחה.

יום שני, 12 ביולי 2010

מדריך למשתמש....

שלום רב,

אני יודע שזה לא קשור ישירות לעולם בסיסי הנתונים (למרות שדוחות באקסל ואפיונים ב- word הם חלק מסדר היום של כל DBA...) ...
להלן קישור להורדת ספר הדרכה ומדריך למשתמש בגרסת האופיס החדשה - office - 2010 .
הספרים כוללים סקירת החידושים , השיפורים והשינויים בגרסה החדשה, ובעתיד הקרוב יתפרסם גם מסמך השוואה בין גרסאות האופיס.

http://www.microsoft.com/israel/landing/office2010_tutorials/

בהצלחה.

יום שלישי, 6 ביולי 2010

JOIN לא שווה - רק דומה....

שלום רב,

שאלה:
יש לי שתי טבלאות בבסיס הנתונים אשר אני רוצה לבצע להם JOIN אך לצערי אין לי שדה מקשר...
כלומר: השדה בטבלה הראשונה הינו "חלק" מהשדה בטבלה השנייה.
לדוגמא: בטבלה הראשונה יש לי עמודה השומרת שם פרטי+שם משפחה ואילו בטבלה השנייה יש לי עמודת שם פרטי בלבד.
כיצד ניתן לבצע join בין שתי הטבלאות?

תשובה:
נהוג לחשוב כי ביצוע Join בין שתי טבלאות הינן רק כאשר שתי העמודות בשתי הטבלאות זהות.
אז זהו שלא... :)
ניתן לשלב במשפט ה- join בעת החיבור בין העמודות - LIke.

לדוגמא:
נקים שתי טבלאות:

טבלה ראשונה תייצג שמות פרטיים של העובדים:

CREATE TABLE [dbo].[t_names](
[name] [nvarchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[t_names] ([name]) VALUES (N'itai')
INSERT [dbo].[t_names] ([name]) VALUES (N'ziki')
INSERT [dbo].[t_names] ([name]) VALUES (N'david')

הטבלה השנייה תייצג שמות מלאים של העובדים:

CREATE TABLE [dbo].[t_full_names](
[full_name] [nvarchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[t_full_names] ([full_name]) VALUES (N'itai binyamin')
INSERT [dbo].[t_full_names] ([full_name]) VALUES (N'zipi')
INSERT [dbo].[t_full_names] ([full_name]) VALUES (N'haya')
INSERT [dbo].[t_full_names] ([full_name]) VALUES (N'veracity group')

במידה ונריץ את המשפט השליפה הבא לא נקבל תשובות מהסיבה שהעמודות הינן שוות (למרות שהן זהות בחלקם...):
SELECT *
FROM t_names INNER JOIN
t_full_names ON t_names.name = t_full_names.full_name

לכן, במידה ונרצה לבצע join בין שתי עמודות שאינן שוות אך זהות בחלקן , נריץ את משפט ה- select כך:

SELECT *
FROM t_names INNER JOIN
t_full_names ON t_full_names.full_name like t_names.name+'%'

בהצלחה!