עבור לתוכן
Magic DevHub
adi_sys

סינכרון נתונים בין שתי טבלאות גדולות - מג'יק 9 מול SQL SERVER 2008

Recommended Posts

שלום,

אני צריך לעדכן נתוני כמויות בתוך טבלת פריטים (זמנית כ 500,000 מק"טים) שנמצאת במערכת המג'יק מתוך טבלה שנמצאת בשרת מרוחק ומחוברת באמצעות LINKED SERVER.

"הפיתרון" שמצאתי (כרגע) זה באמצעות JOB שמוחק כל כמה דקות את הטבלה במג'יק ומזרים אליה את כל הנתונים מהשרת המרוחק.

הבעיה שלעובדים "נעלמים" נתוני הכמויות למספר שניות בכל פעם שה JOB רץ.

האם למישהו רעיון יותר טוב.

תודה מראש

adi_sys

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

אחד הדרכים שאתה יכול לבצע זה BATCH שיבצע כל פעם את המחיקה והזרמה <U>חלקית של נתונים מחדש
delete top(100) ו insert select top(100).

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

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן,

קודם כל תודה.

פעולה כזו תנפח לי את קובץ הלוגים בצורה מטורפת (זו גם הסיבה שאני מבצע TRUNCATE) לפני.

גם בדרך השניה יאבדו נתונים לשבררי שניה.

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

יש עוד רעיון ?

adi_sys

 

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

עוד רעיון זה לבצע truncate ואז באמצעות פקודה BCP או BULK INSERT להזרים נתונים.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן,

האם פקודת BCP חייבת להיות מתוך ה CMD

כיצד היית עושה את זה באמצעות פקודת SQL

אני רוצה לייצר קובץ CSV ומייד לאחר מכן לבצע TRUNCATE לטבלה ולאחר מכן BULK INSERT - הכל דרך JOB מתוזמן.

תודה מראש

adi_sys

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

פקודת BCP יכולה להתבצע גם דרך SQL,מריצים אותה בעזרת פרוצדורה מובנת ב SQL SERVER master..xp_cmdshell.
דוגמא ליצירת קובץ CSV
<A href="https://www.simple-talk.com/sql/database-administration/creating-csv-files-using-bcp-and-stored-procedures/">https://www.simple-talk.com/sql/database-administration/creating-csv-files-using-bcp-and-stored-procedures/
<A href="http://dba.stackexchange.com/questions/23566/writing-select-result-to-A-csv-file">http://dba.stackexchange.com/questions/23566/writing-select-result-to-A-csv-file

אתה יכול לבצע הכל דרך  יצוא OPENROWSET ויבוא BULK INSERT
הייתי מייצר פרוצדורה שמבצעת את כל התהליך ואז קורה את הפרוצדורה מ JOB.
דוגמאות:
<A href="http://stackoverflow.com/questions/9086880/t-sql-export-to-new-excel-file">http://stackoverflow.com/questions/9086880/t-sql-export-to-new-excel-file
<A href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926">http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

או לחילופין בונה SSIS package שמבצע את כל התהליך ואז קורה לו מתוך JOB.
אם תצטרך עוד עזרה יוכל לסייעה לך.
שים לב כשאתה מייצר קובץ או מבצע יבוא שלמשתמש שמריץ SQL SERVER יש הרשאה לאותה תיקיה ואם אתה רושם C:\ זה דיסק שנמצא בשרת ולא אצלך במחשב.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי,

זה לא ממש הולך ...

מכיוון שמדובר על נתונים מ linked server (שרת מרוחק), אני לא יכול ליצר SSIS package , כלומר ליצא ל CSV.

עם ה BULK Insert אני מסתדר.

תודה

adi_sys

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

התחבר או הרשם על מנת להגיב.

עליך להיות משתמש רשום על מנת להגיב

צור חשבון

צור חשבון חדש בקהילה בקלי קלות.

רישום חשבון חדש

התחבר

משתמש קיים? התחבר.

התחבר עכשיו

×