PDA

View Full Version : سوال: ايجاد ساختار بانك به كمك فايل sql



pazahr
دوشنبه 14 مرداد 1387, 02:13 صبح
سلام.
يك برنامه با دلفي نوشتم كه بانك اطلاعاتيش sql server هست
هدف اصليم ايجاد يك بانك جديد با ساختار موجود هست. يعني الان داريم با بانك سال 87 كار مي كنيم و بهش وصل هستيم اما وقتي سال تمام شد لازمه كه يك بانك به نام 88 ساخته بشه كه از اون به بعد به اون وصل بشيم.
چند راه به نظر ميرسه اما بهترين راه فكر كنم اين باشه كه كد sql ايجاد بانك و جداول و ويو هاي اون رو توي فايل .sql تهيه كنيم كه اينكار براحتي توي sql server 2005 امكان پذيره.
اما فقط ميمونه چطوري با يه دستور command line كه جز امكانات خود sql server باشه فايل هاي .sql اجرا بشن و بانك با جزيياتش ساخته بشه.
لطفا راهنمايي بفرماييد. البته اگه راه ساده تري هم هست مثل معرفي تابع يا برنامه اي براي كپي كردن بانك و جداول ممنون ميشم.
متشكرم.

ASKaffash
دوشنبه 14 مرداد 1387, 11:26 صبح
سلام
شما یک SP میسازید که اول بانک اطلاعاتی را میسازد بعد با SP دوم که ConnectionString آن به بانک ایجادشده جدید اشاره کنید و جداول و سایر Object ها را بسازید

pazahr
دوشنبه 14 مرداد 1387, 20:51 عصر
قسمت دوم رو دقيقا متوجه نشدم!
من مي خوام فايل اسكريپت sql. رو اجرا كنم تا در نتيجه اون بانك و جزيياتش ساخته بشه.:متفکر:
حتي اگر SP بسازم براي ذخيره كردنش بايد sql. باشه
تازه وقتي بالفرض فقط يه بانك خالي داريم و هنوز sp اي وجود نداره چطور با connection string بخوام چيزي رو اجرا كنم.

pazahr
دوشنبه 14 مرداد 1387, 22:28 عصر
يه همچين كدي توي دلفي مي خوام :


WinExec('E:\Microsoft SQL Server\90\Tools\Binn\osql -u -i d:\333.sql',SW_SHOWNORMAL);

فكر مي كنم كد درسته اما نمي دونم چرا اجرا نميشه؟! يعني نتيجه كار كه ساخته شدن يه ويو هست انجام نميشه.
اينم محتواي فايل 333.sql :


USE [KBP85]
GO
/****** Object: View [dbo].[Anb333] Script Date: 08/04/2008 21:32:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Anb333]
AS
SELECT kala, sum(meghdar) AS S
FROM Anbarkh
GROUP BY kala

رضا عربلو
دوشنبه 14 مرداد 1387, 22:33 عصر
برای ساخت دیتابیس جدید بایستی کانکشن اسکرینت را به دیتابیس Master بنویسی.

pazahr
سه شنبه 15 مرداد 1387, 01:47 صبح
ساختن ديتابيس رو با كد نويسي توي دلفي حل كردم.
الان فقط مشكلم اينه كه يه بانك خالي دارم اما ساختار داخل بانك شامل ويو ها و جداول رو مي خوام با يك فايل sql. ايجاد كنم.
:عصبانی++: لطفا به توضيحاتم توجه كنيد . اگه ميشه كمكم كنيد.
كسي با osql يا sqlcmd اين كارو انجام داده؟ عين help خود sql server هم نوشتم اما جواب نداد

amin_alexi
سه شنبه 15 مرداد 1387, 09:10 صبح
سلام
کاری که من واسه این کار میکنم :
من در Unit مربوطه (DBAcc) به ازای هر Table یا View یک Function می نویسم ...
که یک مقدار SQL رو بر می گردونه و سپس این Function رو با AdoCommand دلفی اجرا میکنم
دستورات SQL دستوراتی هستند که واسه ساخت Table یا View باید نوشت ...

pazahr
سه شنبه 15 مرداد 1387, 19:30 عصر
سلام.
امين جان : من هم گفتم راه هاي زيادي وجود داره. مثل همين راهي كه شما گفتي كه خودم هم از اول توي ذهنم بود.
اما مشكل اين روش اينه كه الان من 44 جدول و ويو دارم كه بايد 44 تا adocommand بذارم روي فرمم يا اينكه تمام 44كد sql توليد كننده جداول و ويوها رو كنار هم بذارم كه با اجراش همه كدها عمل كنند كه خودت مي دوني چه فاجعه اي ميشه!!!
براي همين دنبال راه راحت تر و مناسب تري بودم.اما خيلي راحت ميشه يك فايل sql. از طريق sql server ساخت كه با اجراي اون همه جداول و ويوها روي سرور ساخته بشن.
اگه نتونم sql. رو اجرا كنم همين راهي كه گفتي بايد انجام بدم.:افسرده:

iran400
سه شنبه 15 مرداد 1387, 19:47 عصر
سلام

بنده هميشه اطلاعات را روي يك ديتابيس قرار مي‌دهم و مي‌شه گفت اطلاعات يكپارچه مي‌باشد.
اصلا درست است كه اطلاعات را نسبت به سال در ديتابيس جدا قرار دهيم؟
تو حجم بالا چطور؟

با تشكر

pazahr
سه شنبه 15 مرداد 1387, 19:47 عصر
آقاي كفاش عزيز :
شما گفتي يك SP توي دلفي درنظر بگيرم كه connection string آن به بانك وصل باشه و محتوي كل اسكريپت سازنده تمام جداول و ويوها باشه.
اما وقتي كه بانك تازه ساخته شده و هيچي توش نيست براي اينكه خاصيت procedurename مربوط به SP رو به يك SP توي بانك sql server ست كنيم، بهترين راه براي ساختن SP توي sql server چيه؟

pazahr
سه شنبه 15 مرداد 1387, 20:14 عصر
كاربر گرامي iran400 :
استفاده از ديتابيسي مجزا براي هر سال :
1 - امنيت ديتابيس را بالاتر مي برد (فيزيكي ، نرم افزاري و ...)
2 - حجم ديتابيس به شدت بالا نمي رود (چون قرار است چند سال با برنامه كار شود) و در نتيجه سرعت كار هم خيلي بيشتر مي شود
3 - نرم افزار تهيه شده با ديتابيس منظم تر خواهد بود

مثل اينكه هيچكس تا حالا sql. رو اجرا نكرده! :ناراحت:
آقاي كفاش ، آقاي امين يا ديگران : لطفا راهنمايي كنيد.

amin_alexi
چهارشنبه 16 مرداد 1387, 09:52 صبح
من پیشنهاد می کنم یه زره وقت بزار و 44 تا تابع بنویس ...
وبا یه دونه ADOCommand که لازم نیست رو هیچ فرمی بزاری این کار رو انجام بده ...
چون میدونم بهترین کار واسه تو همینه و حتما سعی کن به ورودی تابعها اسم رو هم به عنوان ورودی بدی و از اسم به صورت یک متغییر استفاده کن و یه تابع به نام CreateTable که اسم DataBase و SQL مربوطه رو می گیره و جدول رو می سازه ... این کار بعدا دستت خیلی بازه .. ارزش 2 شب بی خوابی رو داره ....

amin_alexi
چهارشنبه 16 مرداد 1387, 10:11 صبح
و یا می تونی فایل SQL رو تو دلفی در زمان اجرا بخونی ... مثل یک فایل متنی ... و بعدش یک String از دستورات درست شده که می تونی اون رو اجرا کنی ...