خانه SQL Server چگونه اسکریپتهای بزرگ را بدون خطای حافظه در SSMS اجرا کنیم!؟ SQL Server نوشته شده توسط: سید محمد حسینی ۲۴ بهمن ۱۳۹۴ زمان مطالعه: 6 دقیقه ۵ (۱) مقدمه آیا تا به حال با این موقعیت مواجه شده اید که بخواهید یک اسکریپت بزرگ را در SSMS اجرا کنید و با این پیغام خطا مواجه شوید؟ “Cannot execute script. Insufficient memory to continue the execution of the program. (mscorlib)” این پیغام خطا به این علت است که SSMS نمی تواند فایل های اسکریپت بزرگ را مدیریت کند و این مشکل حتی در SQL Server 2014 نیز باقی مانده است. در ادامه قصد داریم به جای استفاده از 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 اجرا کنیم. در این تمرین، فایل اسکریپت مورد استفاده ما دارای حجم ۸۴MB جهت درج ۱۵۰۰۰۰۰ رکورد در جدول می باشد(جهت ایجاد این فایل اسکریپت می توان از کد زیر استفاده نمود) 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 قادر به مدیریت این فایل نباشد. استفاده از SQLCMD جهت اجرای اسکریپت های T-SQL بزرگ برای اجرای اسکریپت های T-SQL بزرگ، می توان به جای SSMS، ابزار SQLCMD را مورد استفاده قرار داد تا از طریق خط فرمان قادر به اجرای این اسکریت ها باشیم. SQLCMD ابزاریست که امکان اجرای دستورات T-SQL، فایل های اسکریپت و همچنین رویه های ذخیره شده(Stored Procedures) را از طریق خط فرمان فراهم می کند. البته باید توجه داشت که SSMS از طریق Microsoft .NET Framework SqlClient دستورات را اجرا می کند، ولی SQLCMD در خط فرمان و از طریق ODBC دستورات را اجرا می کند. فرض کنید که نام سرور و اینستنس ما HOSEINI-PC\MSSQL2014 باشد، همچنین نام و مسیر فایل اسکریپت مورد نظر D:\InsertData.sql باشد. جهت مشخص کردن فایل ورودی و اجرای آن بر روی اینستنس مورد نظر، از دستورات زیر در خط فرمان استفاده می شود. Sqlcmd –S HOSEINI-PC\MSSQL2014 –d TestDB –i “D:\InsertData.sql” با فشار دادن کلید Enter، این اسکریپت شروع به اجرا شده و پس از اجرا، پیغام اجرای موفقیت آمیز اسکریپت قابل مشاهده است. همچنین می توان در SSMS رکوردهای ثبت شده را مورد بررسی قرار داد SP_SPACEUSED '[dbo].[TestTable]' در پایان SSMS برای اجرای فایل های اسکریپت بزرگ قابل استفاده نیست. در هر حال درمواردی ما نیاز به مدیریت فایل های بزرگ(نظیر بارگذاری حجم زیادی از اطلاعات، اجرای اسکریپت های ایجاد بانک های اطلاعاتی که از روی بانک های اطلاعاتی بزرگ تولید شده اند و…) داریم و با استفاده از ابزار SQLCMD از طریق خط فرمان، امکان رفع این مشکل را خواهیم داشت. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش برچسب ها # SQL Server# SSMS# آموزش SQL Server# حافظه در SQL Server معرفی نویسنده مقالات 11 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده سید محمد حسینی پروفایل نویسنده معرفی محصول ایمان باقری دوره آموزشی کوئری نویسی در SQL Server 2.190.000 تومان 1.314.000 تومان مقالات مرتبط ۰۵ فروردین SQL Server عملگر LIKE در SQL Server – نحوه استفاده از عملگر LIKE چگونه است؟ تیم فنی نیک آموز ۲۷ اسفند SQL Server Schema در SQL Server چیست؟ آشنایی با روش های ایجاد اسکیما تیم فنی نیک آموز ۲۰ اسفند SQL Server آشنایی با دستور CREATE VIEW در SQL Server + مزایا و کاربردها تیم فنی نیک آموز ۰۶ اسفند SQL Server دستور Create Table در SQL Server – آشنایی با کاربردها و نحوه ایجاد جدول تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ مسعود طاهری ۲۷ / ۱۱ / ۹۴ - ۱۱:۲۱ ممکن است تنظیمات (تنظیم Maximum Script Size در SSMS فعال بوده باشد. https://www.mssqltips.com/sqlservertip/2591/troubleshooting-intellisense-in-sql-server-management-studio-2012/ پاسخ به دیدگاه