شما میتوانید یک container مخصوص SQL Server داشته باشید و یکی هم مخصوص برنامهی ASP.NET خودتان که IIS را اجرا میکند. بعد این وسط باید بین اینها سیم کشی کرد. این سیم کشی در قسمت بعدی تحت عنوان docker-compose بحث شده. همچنین چند مثال هم مانند «اجرای پروژهی ASP.NET Core Music Store توسط docker-compose» در آن بحث شدند که به همراه این سیمکشیها هستند.
چنین دستوری در متن جایی عنوان نشدهاست. موردی که عنوان شده، این است:
الف) اجرای sqlcmd با پارامتر S و مشخص سازی وهلهی مورد نظر
«نقطهای» که دراینجا ذکر شده (. sqlcmd -S )، همان اشاره به وهلهی پیش فرض است و حالت کلی آن Server_Name\Instance_Name هست.
نام وهلههای نصب شدهی بر روی سیستم را در این مدخل رجیستری ویندوز میتوانید پیدا کنید (و یا دستور sqlcmd -L را اجرا کنید):
الف) اجرای sqlcmd با پارامتر S و مشخص سازی وهلهی مورد نظر
«نقطهای» که دراینجا ذکر شده (. sqlcmd -S )، همان اشاره به وهلهی پیش فرض است و حالت کلی آن Server_Name\Instance_Name هست.
نام وهلههای نصب شدهی بر روی سیستم را در این مدخل رجیستری ویندوز میتوانید پیدا کنید (و یا دستور sqlcmd -L را اجرا کنید):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names
نظرات مطالب
آشنایی و بررسی ابزار Glimpse
glimpse و Miniprofiler هر دو با Ef6 مشکل دارند . گرچه در سایتهای برنامههای فوق عنوان شده که Ef6 را پوشش میدهند اما هر کدوم به نحوی باگی دارند. از اونجایی که در Ef6 با Rdbms اسکیوال CE کار میکنم و همانند Sql server پروفایلری نداره که دستورات ارسالی را بشه دید شما در Ef6 به غیر از دو پروفایل ذکر شده از چه پروفایلری استفاده میکنید؟
با استفاده از ADO.NET نمیتوان کوئریهای MDX را مستقیما اجرا کرد. برای اینکار نیاز به Microsoft.AnalysisServices.AdomdClient.dll هست. برای دریافت آن به صفحهی Microsoft® SQL Server® 2012 Feature Pack مراجعه و قسمت Microsoft® SQL Server® 2012 ADOMD.NET را در صفحه جستجو کنید. برای نگارش 2008 به صفحهی Microsoft® SQL Server® 2008 R2 Feature Pack مراجعه و در آن Analysis Management Objects را دریافت کنید. برای SQL Server 2005 نیز در اینجا پروایدر ADOMD قابل دریافت است.
بعد برای استفاده از آن خواهید داشت:
و یا پروژه MdxClient - ADO.NET data provider for MDX queries سعی کرده این روش را تبدیل به یک پروایدر جدید ADO.NET کند. نکتهی جالب این پروایدر امکان تعریف مقادیر دریافتی از کاربر به صورت پارامتر است در کوئریها تعریف شده. فایل readme آنرا برای مشاهده یک سری مثال در مورد نحوهی تعریف پارامترها و دریافت دادههای ارسالی از طریق کاربر، مطالعه کنید.
بعد برای استفاده از آن خواهید داشت:
using (AdomdConnection conn = new AdomdConnection("Data Source=tfsDB;Initial Catalog=Tfs_Analysis; MDX Compatibility=1;")) { conn.Open(); using (AdomdCommand cmd = new AdomdCommand(" ....... mdxQuery here ....... ", conn)) { DataSet ds = new DataSet(); ds.EnforceConstraints = false; ds.Tables.Add(); DataTable dt = ds.Tables[0]; dt.Load(cmd.ExecuteReader()); return dt; } }
نظرات مطالب
گرفتن خروجی XML از جداول در SQL Server 2012
- میتونی با کدنویسی اینکار رو انجام بدی:
var reportData = new DataSet(); reportData.ReadXml("yourfile.xml"); var connection = new SqlConnection("DB ConnectionSTring"); var sbc = new SqlBulkCopy(connection); sbc.DestinationTableName = "yourXMLTable";
- و یا از OPENXML میشه استفاده کرد:
INSERT Customers SELECT * FROM OPENXML ...
نظرات مطالب
EF Code First #4
- برای انجام اعمال مختلف در SQL Server، سطوح دسترسی مختلفی وجود دارند. یک کاربر میتواند دسترسی درج رکوردها را داشته باشد، اما دسترسی ایجاد یا تغییر ساختار بانک اطلاعاتی را نداشته باشد.
- در EF 6 این جدول MigrationHistory دیگر سیستمی نیست.
- یوزر sa دسترسی مدیریتی دارد (حالت اول). احتمالا در حالت دوم که یکپارچه با ویندوز است، اکانت وارد شده به سیستم نیز admin است؛ وگرنه دسترسی لازم را نخواهد داشت که دیتابیس ایجاد کند.
- در EF 6 این جدول MigrationHistory دیگر سیستمی نیست.
- یوزر sa دسترسی مدیریتی دارد (حالت اول). احتمالا در حالت دوم که یکپارچه با ویندوز است، اکانت وارد شده به سیستم نیز admin است؛ وگرنه دسترسی لازم را نخواهد داشت که دیتابیس ایجاد کند.
از چه دیتابیسی استفاده میکنید؟ اگر SQL Server است که تا قبل از نگارش 2008 آن چنین اجازهای رو به شما نمیده تا یک فیلد منحصربفرد نال پذیر داشته باشید. اگر 2008 به بعد است، باید ایندکس فیلتر شده برای اینکار تعریف کنید. مثلا:
اطلاعات بیشتر اینجا و اینجا
بر همین مبنا باید قسمت ADD CONSTRAINT متد ExecuteUniqueIndexes را در صورت نیاز بازنویسی کنید.
create unique nonclustered index idx on dbo.DimCustomer(emailAddress) where EmailAddress is not null;
بر همین مبنا باید قسمت ADD CONSTRAINT متد ExecuteUniqueIndexes را در صورت نیاز بازنویسی کنید.
نظرات مطالب
بازگردانی پایگاه داده بدون فایل لاگ
سلام
دیتابیسی هست که به حالت InRecovery رفته. در SQL Server Management Studio در لیست دیتابیسها وجود داره ولی جلوی اسم اون عبارت InRecovery رو نوشته. در این حالت که هست نمیشه که ساختار این دیتابیس اعم از جدول ها، دادههای داخل اون جداول، stored procedureها و ... رو ببینیم. از اطلاعات اون هم پشتیبان گیری نشده و به دادههای داخل اون نیاز هست. شما میدونید مشکل چیه و چطور حل میشه ؟
با تشکر
دیتابیسی هست که به حالت InRecovery رفته. در SQL Server Management Studio در لیست دیتابیسها وجود داره ولی جلوی اسم اون عبارت InRecovery رو نوشته. در این حالت که هست نمیشه که ساختار این دیتابیس اعم از جدول ها، دادههای داخل اون جداول، stored procedureها و ... رو ببینیم. از اطلاعات اون هم پشتیبان گیری نشده و به دادههای داخل اون نیاز هست. شما میدونید مشکل چیه و چطور حل میشه ؟
با تشکر
نظرات مطالب
EF Code First #12
خیر. به ازای هر SaveChanges یک تراکنش خاتمه یافته و تراکنش جدیدی آغاز میشود (این موارد رو میتونید با SQL Server Profiler دقیقا مشاهده کنید).
+ ضرورتی ندارد در یک تراکنش، از چندین و چند SaveChanges استفاده کنید؛ از این جهت که EF از مکانیزم Tracking برخوردار است و میتواند با یک SaveChanges ، چندین و چند عملیات insert و update را (بهینهترین حالتی را که محاسبه کرده) با هم در طی یک تراکنش بر اساس مواردی که ردیابی کرده، انجام دهد.
+ ضرورتی ندارد در یک تراکنش، از چندین و چند SaveChanges استفاده کنید؛ از این جهت که EF از مکانیزم Tracking برخوردار است و میتواند با یک SaveChanges ، چندین و چند عملیات insert و update را (بهینهترین حالتی را که محاسبه کرده) با هم در طی یک تراکنش بر اساس مواردی که ردیابی کرده، انجام دهد.