זיהוי תחנה מפעילה , CLIENT או SERVER

פורומים אפיון ופיתוח פריוריטי זיהוי תחנה מפעילה , CLIENT או SERVER

  • Post
    ofir
    משתתף
    שלום לכם,

    האם ישנה דרך לזהות את העמדה המפעילה פרצדורה ?

    אני מעוניין להגביל הפעלה של הפרצדורה שתרוץ רק דרך המחשב בשרת ולא במחשבי המשתמש.

    לא מעוניין לבדוק SQL.USER כי ייתכן וגם משתמש לא TABULA יפעיל את הפרצדורה.

    יש קבוע שניתן לבדוק?

מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    אתם עובדים על SQL Server?

    אם כן, ראה פרק 15 של ה-SDK (אצלי עמוד 206)

    פקודה של SQL Server כזו

    select host_name()

    תביא לך את שם התחנה.

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

    מקווה שאתה איתי…

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    ofir
    משתתף
    שלום יצחק
    אני עם sdk 17
    בכל הפרק בנושא זה לא מופיעה הפקודה שציינת.
    ישנה פקודה שקוראת נתונים מקובץ ה tabula.ini
    ובה לא ניתן לזהות האם מדובר התחנה או בשרת.
    היכן משיג sdk 15
    yitzchok
    משתתף
    IL
    הפניתי אותך לקטע של ה-SDK שמזכיר שיש להתסתכל בפרוצדורה בשם SQLCHECK.

    היא קיימת גם בגרסה 15.

    אתה צריך להשתמש בפקודה SQLRUN בצורה מתאימה.

    הקוד שאני שלחתי זה קוד של SQL Server.
    אם אתה יודע איך לעבוד ב-SQL Server מול DB של פריוריטי (ברמה של תהליכי טעינה, נגיד), אז מה שאני כתבתי צריך פחות או יותר להספיק לך.
    אם אין לך נסיון בכתיבת קוד מול SQL Server אז אל תיגע, אל תסתבך, וראה את זה כדבר שאתה לא יכול לעשות.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    זה לא שאני לא רוצה לגלות סודות – יותר שזה נכנס לתחום של טכניקות מתקדמות ואני מעדיף לרמוז בשלב זה ולא לתת לך הנחיות שלא תבין אותן טוב.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    שלום
    במחשבה נוספת אפשר אולי לפתור את זה בצורה אחרת.
    הרי אתה לא צריך לדעת דווקא את שם המכונה.
    מספיק לדעת אם זה המכונה בה אתה רוצה שהתהליך ירוץ או לא.
    כך שמה שתוכל לעשות זה להשתמש בפונקציה שנותנת לך לקרוא מקובץ ה-INI.
    או לקרוא ערך שקיים רק בשרת, או פשוט להוסיף בעצמך ערך פרטי ויחודי רק ב-INI של השרת ולבדוק אם הוא קיים בהרצת הפרוצדורה.
    בהצלחה
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    ofir
    משתתף
    תודה יצחק
    גולן סלמן
    משתתף
    שלום רב,

    יש לך גם מסך שמציג לך תהליכים שרצים, מסך שנקרא: "תהליכים בבצוע".
    הנתיב: מנהל המערכת > תחזוקת מערכת > תחזוקה שוטפת > תהליכים בבצוע.
    במסך זה אתה יכול לראות איזה משתמש הפעיל פרוצדורה (מציג עד לתקופה מסויימת אחורה).

    ofir
    משתתף
    הרעיון הוא לחסום הרצת פרוצדורה שלא מתוך הפריורטי שבשרת.
    snoof123
    משתתף
    היי באותו הקשר (פחות או יותר):
    כשאני משתמש בקוד:
    EXECUTE TABINI 'ENVIRONEMNT', 'TABULA HOST', :$.GEN;
    LINK GENERALLOAD TO :$.GEN;
    SELECT TEXT INTO :PAR1
    FROM GENERALLOAD WHERE LINE = 1;
    UNLINK GENERALLOAD;
    WRNMSG 99;

    אני מניח שזו פשוט טעות טיפשית שלי, אבל אני לא מצליח להביא את הערך של ההוסט המארח אלא בעצם הוא רק רושם לי בהודעת אזהרה (שהוספתי שם) 'TABULA HOST'

    yitzchok
    משתתף
    IL
    אכן טעות טיפשית, כנראה…

    תבדוק את האיות של Environment אצלך ועוד *יתכן* שזה case sensitive ואז גם אם אוית נכון זה לא יתאים כל עוד כתוב כולו באותיות גדולות.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    snoof123
    משתתף
    לא משנה, הצלחתי 🙂
    תודה, אחלה פיתרון כדי לדעת אם השגיאה מגיעה משרת פיתוח, בדיקות או ייצור
    יישר כוח
מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.