PDA

View Full Version : مشکل با Stored Procedure در زمان save as template



vb341
سه شنبه 12 تیر 1386, 18:43 عصر
با سلام . دوستان من یک Stored Procedure طولانی دارم و زمانیکه میخوام اون رو بصورت
save as template ذخیره کنم با پیغام خطائی که تصویر اونو ضمیمه کردم مواجه میشم .

vb341
سه شنبه 12 تیر 1386, 22:12 عصر
در ضمن یادم رفت بگم من از sql server 2000 استفاده میکنم

AminSobati
سه شنبه 12 تیر 1386, 23:38 عصر
دوست عزیزم اگر در Query Analyzer دستور Create Proc رو اجرا کنین موفقیت آمیز هست؟

vb341
چهارشنبه 13 تیر 1386, 00:04 صبح
آقای ثباتی متوجه منظورتون نمیشم . یکی از جداول من چون تعداد فیلدهاش زیاده با این مشکل بر میخورم و بیشتر از 4096 کاراکتر که میشه دیگه قبول نمیکنه در ضمن من Stored Procedure هام رو بروش زیر انجام میدم که هر سه عمل insert,delete و update رو تو خودش داره . ولی در این مورد با اینکه عمل insert رو حتی به تنهائی در stored procedure قرار میدم با پیغام که تصویرش رو گذاشتم مواجه میشم
در ضمن این یک نمونه از stored procedure هست


CREATE PROCEDURE stpAglamJensi
@action varchar(25)=null,
@ajcod int=null ,
@ajdesc nvarchar(30) = null ,
@ajno int=null ,
@ajvhcod int = null
AS
--1************************************************* ************
if @action='add'
begin
insert tblaglamjensi (ajcod,ajdesc,ajvhcod,ajno) values ( @ajcod,@ajdesc,@ajvhcod,@ajno )
end
if @action='edit'
begin
update tblaglamjensi set ajdesc =@ajdesc ,ajvhcod = @ajvhcod ,ajno = @ajno where ajcod= @ajcod
end
if @action='delete'
begin
delete tblaglamjensi where ajcod= @ajcod
end
GO

AminSobati
چهارشنبه 13 تیر 1386, 01:14 صبح
چه چیزی بیشتر از 4096 کاراکتر میشه؟
ضمنا Procedureها رو به این شکل بسازین تا هم تعدادشون زیاد نشه (چیزی که مد نظر شماست) و هم اصولی تر باشه:


create proc mysp;1
as
-- insert command...
go

create proc mysp;2
as
-- delete command...
go

create proc mysp;3
as
-- update command...
go

vb341
چهارشنبه 13 تیر 1386, 13:40 عصر
جناب ثباتی دو تا از جداول اصلی من حجمشون زیاده و هر کدوم 50 الی 60 فیلد دارن .طبق روشی که شما فرمودین هم چون طول کاراکترهائی که به عنوان فیلدها و دستورات در Procedure نوشته میشه بیش از 4096 کاراکتر میشه که طبق همون عکس ضمیمه در پست قبلی خطا میده

AminSobati
چهارشنبه 13 تیر 1386, 14:14 عصر
منظورتون اینه که حجم SP زیاده؟ بر طبق این لینک، حجم SP خیلی بیشتر از چیزی میتونه باشه که شما به خاطر پیغام خطا گرفتین:
http://msdn2.microsoft.com/en-us/library/aa933149(SQL.80).aspx
نمیدونم امتحان کردین که در Query Analyzer این SP رو بسازین یا نه

vb341
چهارشنبه 13 تیر 1386, 17:34 عصر
بله . حجم sp زیاده . ولی تو query analyzer تست نکردم . اجازه بدین تست میکنم جوابش رو میدم. در ضمن چیزی که یادم افتاد اینکه من حتی برای اینکه گفتم شاید کار من اشکال داشته باشه با ویزارد خود sql اقدام به ساخت stored procedures کردم و سه تا sotored procedures جدا برای insert , delete , update به من داد . ولی وقتی میام سه تا رو در قالب یک procedurers قرار بدم همون پیغام خطا رو دارم

vb341
شنبه 16 تیر 1386, 01:20 صبح
آقای ثباتی اگر میشه بگین مشکل این Sp چیه . من وقتی میخوام چند خط دیگه به اون اضاف کنم همون پیغامی رو که گفتم میده :


CREATE PROCEDURE StpMasjedInsert

@MTCod int=null,
@MtName nvarchar(30)=null,
@MtTasisDate nvarchar(6)=null,
@MtMoasesName nvarchar(30)=null,
@MtModirName nvarchar(30)=null,
@MtModirGabl1 nvarchar(30)=null,
@MtModirGabl2 nvarchar(30)=null,
@MtModirGabl3 nvarchar(30)=null,
@MtModirGabl4 nvarchar(30)=null,
@MtVazMelki int=null,
@MtEjareVal float=null,
@MtKaridVal float=null,
@MtKaridvalHal float=null,
@MtKaridDate nvarchar(6)=null,
@MtPleKarid int=null,
@MtMasahat float=null,
@MtZirBana float=null,
@MtOtagNo int=null,
@MtOtagSokonat int=null,
@MtMadrash int=null,
@MtMasjed nvarchar(50)=null,
@MtVazSakteman int=null,
@MtMogofe bit=null,
@MtMogofeBag int=null,
@MtMogofeZamin int=null,
@MtMogofeManzel int=null,
@MtMogofeMagaze int=null,
@MtMogofeAyedi nvarchar(50)=null,
@MtEmkanatTel int=null,
@MtEmkanatFax int=null,
@MtEmkanatAb int=null,
@MtEmkanatBarg int=null,
@MtTel nvarchar(30)=null,
@MtFax nvarchar(30)=null,
@MtComputer int=null,
@MtChap int=null,
@MtKodroDesc nvarchar(50)=null,
@MtMotorDesc nvarchar(50)=null,
@MtKetabKaneDesc nvarchar(100)=null,
@MtNavarKanehDesc nvarchar(100)=null,
@MtMatBoatDesc nvarchar(100)=null,
@MtSayerDesc nvarchar(100)=null,
@MtShCod int=null,
@MtBkCod int=null,
@MtDhCod int=null,
@MtRsCod int=null,
@MtAhameat int=null,
@MtTashayo int=null,
@MtMaleki int=null,
@MtShafee int=null,
@MtHanbali int=null,
@MtHanafi int=null,
@MtOther int=null,
@MtTalagiMardom int=null,
@MtBarkordMasolaen int=null,
@MtIsMadrese int=null,
@MtNameSonniMadrese nvarchar(30)=null,
@MtNameSheaeMadrese nvarchar(30)=null,
@MtErtebatBaMadares int=null,
@MtDescErtebat nvarchar(100)=null,
@MtDescAdamErtebat nvarchar(100)=null,
@MtDescDaftarValiFageah nvarchar(100)=null,
@MtDescDaftarDarOstan nvarchar(100)=null,
@MtKatar int=null,
@MtDescKatar nvarchar(100)=null,
@MtTedadTalabeDarSal int=null,
@MtDescNoePazeresh nvarchar(100)=null
AS INSERT INTO TblMasjed ( MTCod,
MtName,
MtTasisDate,
MtMoasesName,
MtModirName,
MtModirGabl1,
MtModirGabl2,
MtModirGabl3,
MtModirGabl4,
MtVazMelki,
MtEjareVal,
MtKaridVal,
MtKaridvalHal,
MtKaridDate,
MtPleKarid,
MtMasahat,
MtZirBana,
MtOtagNo,
MtOtagSokonat,
MtMadrash,
MtMasjed,
MtVazSakteman,
MtMogofe,
MtMogofeBag,
MtMogofeZamin,
MtMogofeManzel,
MtMogofeMagaze,
MtMogofeAyedi,
MtEmkanatTel,
MtEmkanatFax,
MtEmkanatAb,
MtEmkanatBarg,
MtTel,
MtFax,
MtComputer,
MtChap,
MtKodroDesc,
MtMotorDesc,
MtKetabKaneDesc,
MtNavarKanehDesc,
MtMatBoatDesc,
MtSayerDesc,
MtShCod,
MtBkCod,
MtDhCod,
MtRsCod,
MtAhameat,
MtTashayo,
MtMaleki,
MtShafee,
MtHanbali,
MtHanafi,
MtOther,
MtTalagiMardom,
MtBarkordMasolaen,
MtIsMadrese,
MtNameSonniMadrese,
MtNameSheaeMadrese,
MtErtebatBaMadares,
MtDescErtebat,
MtDescAdamErtebat,
MtDescDaftarValiFageah,
MtDescDaftarDarOstan,
MtKatar,
MtDescKatar,
MtTedadTalabeDarSal,
MtDescNoePazeresh)
VALUES
( @MTCod,
@MtName,
@MtTasisDate,
@MtMoasesName,
@MtModirName,
@MtModirGabl1,
@MtModirGabl2,
@MtModirGabl3,
@MtModirGabl4,
@MtVazMelki,
@MtEjareVal,
@MtKaridVal,
@MtKaridvalHal,
@MtKaridDate,
@MtPleKarid,
@MtMasahat,
@MtZirBana,
@MtOtagNo,
@MtOtagSokonat,
@MtMadrash,
@MtMasjed,
@MtVazSakteman,
@MtMogofe,
@MtMogofeBag,
@MtMogofeZamin,
@MtMogofeManzel,
@MtMogofeMagaze,
@MtMogofeAyedi,
@MtEmkanatTel,
@MtEmkanatFax,
@MtEmkanatAb,
@MtEmkanatBarg,
@MtTel,
@MtFax,
@MtComputer,
@MtChap,
@MtKodroDesc,
@MtMotorDesc,
@MtKetabKaneDesc,
@MtNavarKanehDesc,
@MtMatBoatDesc,
@MtSayerDesc,
@MtShCod,
@MtBkCod,
@MtDhCod,
@MtRsCod,
@MtAhameat,
@MtTashayo,
@MtMaleki,
@MtShafee,
@MtHanbali,
@MtHanafi,
@MtOther,
@MtTalagiMardom,
@MtBarkordMasolaen,
@MtIsMadrese,
@MtNameSonniMadrese,
@MtNameSheaeMadrese,
@MtErtebatBaMadares,
@MtDescErtebat,
@MtDescAdamErtebat,
@MtDescDaftarValiFageah,
@MtDescDaftarDarOstan,
@MtKatar,
@MtDescKatar,
@MtTedadTalabeDarSal,
@MtDescNoePazeresh)
GO

AminSobati
شنبه 16 تیر 1386, 11:13 صبح
در Query Analyzer پیغام خطا میده؟

vb341
شنبه 16 تیر 1386, 14:04 عصر
جناب ثباتی من تو اجرای Sp مشکل ندارم . مشکل من در زمان طراحی Sp در خود SQl Server هست که وقتی تعداد کاراکترها به بیش از 4096 کاراکتر رسید اجازه Save As Tamplate رو نمیده . در ضمن من Backup بانک رو براتون میزارم . اونو به اسم دیتا بیس tolabahlsonat در Sql رستور کنید و ببینین مشکل چیه ؟ ممنون از توجهتون >

AminSobati
شنبه 16 تیر 1386, 21:00 عصر
متاسفانه SQL Server 2000 رو کامپیوترم نیست (و نباید نصب کنم!). اشکالی داره SP رو همیشه در Query Analyzer بسازید؟

vb341
شنبه 16 تیر 1386, 21:38 عصر
پس اجازه بدین طبق روش شما برم و ببینم چطور میشه !!!

vb341
شنبه 13 مرداد 1386, 23:57 عصر
آقای ثباتی مشکل حل شد و به این خاطر پیغام خطا میداد چون طول دستور من در بعضی مواقع در یک خط بیش از تعداد شماره ذکر شده در پیغام خطا میشد و با کم کردن طول دستور در یک خط هیچ مشکلی پیش نیومد