عرض مشاركة واحدة
قديم 26-Jun-2011, 02:04 PM   #1
Monzer Osama
مدير عام منتديات جريت بلينز العربية
Lightbulb خطوات إنشاء البيئة التجريبية في جريت بلينز (تجربة شركة ما)

السلام عليكم ورحمة الله

كلنا يعرف حساسية البيانات الموجودة في البرنامج وقد يقوم المستخدم أو المطور أو حتى المحاسب بعملية في البرنامج تؤثر بشكل كبير على
الـ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','DBNAME')
	 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%',@acStatement)-9)
	 	Exec (@acStatement)
	 FETCH NEXT FROM G_cursor INTO @acStatement 
end
DEALLOCATE G_cursor 
select [tableName] as 'Tables that were Updated' from ##updatedTables

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

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

وفق الله الجميع لما فيه الخير
والسلام عليكم
__________________
Monzer Osama
Saudia Arabia - Jeddah
00966501826235
Microsoft Certified Business Management Solutions Professional
Microsoft Certified Trainer
Monzer Osama غير متواجد حالياً   رد مع اقتباس