چگونه اسکریپتهای بزرگ را بدون خطای حافظه در SSMS اجرا کنیم!؟ SQL Server دستورات SQL نوشته شده توسط: سید محمد حسینی تاریخ انتشار: ۲۴ بهمن ۱۳۹۴ آخرین بروزرسانی: 30 بهمن 1403 زمان مطالعه: 3 دقیقه ۵ (۱) اجرا اسکریپتهای بزرگ در SSMS، آیا تا به حال با این موقعیت مواجه شده اید که بخواهید یک اسکریپت بزرگ را در SSMS اجرا کنید و با این پیغام خطا مواجه شوید؟ برای آشنایی بهتر با محیط SSMS مقاله SSMS چیست؟ را مطالعه کنید. “Cannot execute script. Insufficient memory to continue the execution of the program. (mscorlib)” اجرا اسکریپتهای بزرگ در SSMS این پیغام خطا به این علت است که SSMS نمی تواند فایل های اسکریپت بزرگ را مدیریت کند و این مشکل حتی در پایگاه داده SQL Server نیز باقی مانده است. در ادامه قصد داریم به جای استفاده از SSMS، این مشکل را با استفاده از ابزار SQLCMD و در خط فرمان رفع کنیم. برای شروع ما نیاز به یک فایل اسکریپت T-SQL بزرگ جهت اجرا در SSMS داریم تا مشکل تشریح شده را مشاهده کنیم. در آغاز یک بانک اطلاعاتی TestDB و یک جدول TestTable ایجاد می کنیم: USE master GO CREATE DATABASE TestDB GO USE TestDB GO CREATE TABLE TestTable ( ID INT, Value INT ) GO حال باید فایل اسکریپت T-SQL را جهت درج اطلاعات درون جدول TestTable، در SSMS اجرا کنیم. در این تمرین، فایل اسکریپت مورد استفاده ما دارای حجم 84MB جهت درج ۱۵۰۰۰۰۰ رکورد در جدول می باشد(جهت ایجاد این فایل اسکریپت می توان از کد زیر استفاده نمود). شما میتوانید کوئری نویسی را به صورت گامبهگام از نیک آموز فرا بگیرید. DECLARE @i int=1 WHILE @i<=1500000 BEGIN PRINT 'INSERT INTO TestTable (ID, Value) VALUES('+CAST(@i AS VARCHAR)+','+CAST(@i+@i AS VARCHAR)+')' IF @i%1000=0 PRINT 'GO' SET @i+=1 END GO پس از اجرای این اسکریپت، با خطای زیر مواجه خواهیم شد: همانطور که گفته شد، این شرایط در مواقعی رخ می دهد که حجم فایل اسکریپت برای SSMS بزرگ بوده و SSMS قادر به مدیریت این فایل نباشد. مشاهده کاملترین و بروزترین آموزش sql server در نیک آموز استفاده از SQLCMD جهت اجرای اسکریپت های T-SQL بزرگ برای اجرای اسکریپت های T-SQL بزرگ، می توان به جای SSMS، ابزار SQLCMD را مورد استفاده قرار داد تا از طریق خط فرمان قادر به اجرای این اسکریت ها باشیم. SQLCMD ابزاریست که امکان اجرای دستورات T-SQL، فایل های اسکریپت و همچنین رویه های ذخیره شده(Stored Procedures) را از طریق خط فرمان فراهم می کند. البته باید توجه داشت که SSMS از طریق Microsoft .NET Framework SqlClient دستورات را اجرا می کند، ولی SQLCMD در خط فرمان و از طریق ODBC دستورات را اجرا می کند. فرض کنید که نام سرور و اینستنس ما HOSEINI-PCMSSQL2014 باشد، همچنین نام و مسیر فایل اسکریپت مورد نظر D:InsertData.sql باشد. جهت مشخص کردن فایل ورودی و اجرای آن بر روی اینستنس مورد نظر، از دستورات زیر در خط فرمان استفاده می شود. Sqlcmd –S HOSEINI-PCMSSQL2014 –d TestDB –i “D:InsertData.sql” با فشار دادن کلید Enter، این اسکریپت شروع به اجرا شده و پس از اجرا، پیغام اجرای موفقیت آمیز اسکریپت قابل مشاهده است. همچنین می توان در SSMS رکوردهای ثبت شده را مورد بررسی قرار داد SP_SPACEUSED '[dbo].[TestTable]' سخن پایانی اجرا اسکریپتهای بزرگ در SSMS، برای اجرای فایل های اسکریپت بزرگ قابل استفاده نیست. در هر حال درمواردی ما نیاز به مدیریت فایل های بزرگ(نظیر بارگذاری حجم زیادی از اطلاعات، اجرای اسکریپت های ایجاد بانک های اطلاعاتی که از روی بانک های اطلاعاتی بزرگ تولید شده اند و…) داریم و با استفاده از ابزار SQLCMD از طریق خط فرمان، امکان رفع این مشکل را خواهیم داشت. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش معرفی نویسنده مقالات 11 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده سید محمد حسینی معرفی محصول ایمان باقری آموزش کوئری نویسی در sql server 2.190.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ مسعود طاهری ۲۷ / ۱۱ / ۹۴ - ۱۱:۲۱ ممکن است تنظیمات (تنظیم Maximum Script Size در SSMS فعال بوده باشد. https://www.mssqltips.com/sqlservertip/2591/troubleshooting-intellisense-in-sql-server-management-studio-2012/ پاسخ به دیدگاه