المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : خطوات إنشاء البيئة التجريبية في جريت بلينز (تجربة شركة ما)


Monzer Osama
26-Jun-2011, 02:00 PM
السلام عليكم ورحمة الله

كلنا يعرف حساسية البيانات الموجودة في البرنامج وقد يقوم المستخدم أو المطور أو حتى المحاسب بعملية في البرنامج تؤثر بشكل كبير على
الـGL وعلى الموديول وقد يكون على مستوى النظام ككل

لذلك لا بد من العمل على بيئة تجريبة تجنب الكثير من المشاكل على المعلومات الحقيقة

وإليكم الطريقة:
تنبيه:
عليك أن تمتلك المهارة الكافية في الـSQL Server والـ Query Analyzer لتنفي هذه المهمة ولا تنسى بأخذ نسخة احتياطية عند كل خطوة

ببسم الله نبدأ:

1- نفتح شركة تجريبة من خلال برنامج GP Utility (على إفتراض أن اسم قاعدة بيانات الشركة X فإن اسم الشركة التجريبية سيكون TESTx)

2- بعد إنشاء الشركة ستكون طبعا خالية من الحسابات ومن كل البيانات

3-ادخل الى برنامج Enterprise Manager الذي يأتي عادة من SQL Server 2000 واعمل نسخ احتياطي لقاعدة بيانات الشركة الأصلية X وسمي الملف باسم Xbackup
4- بعد إغلاق جريت بلينز إعمل استعادة لقاعدة البيانات الأصلية Xbackup على القاعدة التجريبية TESTx

5- قم بالدخول الى برنامج Query Analyzer واختر اسم الشركة التجريبية TESTx وقم بتنفيذ الكود التالي



/************************************************** ****************************/
/* Description: */
/* Updates any table that contains a company ID or database name value */
/* with the proper values as they are stored in the DYNAMICS.dbo.SY01500 table */
/* */
/************************************************** ****************************/

if not exists(select 1 from tempdb.dbo.sysobjects where name = '##updatedTables')
create table [##updatedTables] ([tableName] char(100))
truncate table ##updatedTables
declare @acStatement varchar(255)
declare G_cursor CURSOR for
select
case
when UPPER(a.COLUMN_NAME) in ('COMPANYID','CMPANYID')
then 'update '+a.TABLE_NAME+' set '+a.COLUMN_NAME+' = '+ cast(b.CMPANYID as char(3))
else
'update '+a.TABLE_NAME+' set '+a.COLUMN_NAME+' = '''+ db_name()+''''
end
from INFORMATION_SCHEMA.COLUMNS a, DYNAMICS.dbo.SY01500 b
where
UPPER(a.COLUMN_NAME) in ('COMPANYID','CMPANYID','INTERID','DB_NAME','DBNAM E')
and b.INTERID = db_name()
set nocount on
OPEN G_cursor
FETCH NEXT FROM G_cursor INTO @acStatement
WHILE (@a@aFETCH_STATUS <> -1)
begin
insert ##updatedTables select
substring(@acStatement,8,patindex('%set%',@acStateme nt)-9)
Exec (@acStatement)
FETCH NEXT FROM G_cursor INTO @acStatement
end
DEALLOCATE G_cursor
select [tableName] as 'Tables that were Updated' from ##updatedTables


قم بالدخول الى الشركة التجريبة وابدأ بعمل تجاربك قبل أن تنفذها على الشركة الأصلية.

هذه الطريقة ستوفر عليكم الكثير من المشاكل عند تنفيذ حالات مشكوك فيهاأو تريد أن تعرف النتائج المترتبة على تنفيذها.

وفق الله الجميع لما فيه الخير
والسلام عليكم

عماد زيد
09-Jul-2011, 03:21 PM
السلام عليكم
أخي الكريم لا أظن أن هناك أي دراعي لتنفيذ الكود بالسيكويل لأن قاعدة بيانات الشركة لا تحوي أي مرجع لرقم الشركة الذي بوجد فقط في قاعدة البيانات DYNAMICS
فيكفي أن تأخذ نسخة احتياطية و تسترجعها فوق قاعدة البيانات الجديدة مع مراعاة الإختيارات الصحيحة للاسكويل سيرفر :
Force restore .... ,
وتغيير اسماء الملفات : Logical files

Monzer Osama
10-Jul-2011, 11:54 AM
وعليكم السلام ورحمة الله
حياك الله أخي الحبيب معنا وأشكر لك ماخلتك
بالنسبة الى تنفيذ الكود ...

الكود يعمل على تحديث بعض البيانات على الـ INFORMATION_SCHEMA وعلى الحقل SY01500 لو تتبعت عمل الكود في الـ SQL Profiler ستجد
فائدة للكود,,,

على العموم هذه التوصيه وهذا الكود من مايكروسوفت نفسها

قد تعمل الطريقة التي أنت ذكرتها (وانا كنت أعمل بها) لكن هذه توصية الشركة ....

شكرا أخي وحياك الله معنا.




السلام عليكم
أخي الكريم لا أظن أن هناك أي دراعي لتنفيذ الكود بالسيكويل لأن قاعدة بيانات الشركة لا تحوي أي مرجع لرقم الشركة الذي بوجد فقط في قاعدة البيانات DYNAMICS
فيكفي أن تأخذ نسخة احتياطية و تسترجعها فوق قاعدة البيانات الجديدة مع مراعاة الإختيارات الصحيحة للاسكويل سيرفر :
Force restore .... ,
وتغيير اسماء الملفات : Logical files

عماد زيد
10-Jul-2011, 12:00 PM
السلام عليكم
أخي الكريم كلامك صحيح
هادا الكود بيلزم للموديولز الإضافية متل الفيلد سيرفس أما الموديولات الأساسية فلا يؤثر عليها
مشكور للتذكير