خروجی گرفتن از Sql به صورت Json
سلام من یه نرم افزار دارم مینویسم در سوییفت و نیاز دارم که اطلاعات رو از SQL سرور 2008 به صورت جیسون دریافت کنم اگر امکانش هست راهنماییم کنید.
7 پاسخ
دوست عزیز واسه بخش اتوماتیک انجام شدن یه اسکریپت هم می تونید از SQL SERVER AGENT استفاده کنید
بعد job رو تعریف کنید زمان بندیش کنید که تکرار بشه
*بهتون توصیه می کنم از تکنولوژی SignalR استفاده کنید : برنامه نویسی سمت سرور بدون وقفه
خیلی ساده می تونه منتظر بمونه به محض اینکه اتفاق جدید افتاد یه رویداد و صدا بزنه .*
انتهای کوئری select بنویسید
FOR xml AUTO
برای مثال
SELECT * FROM table1 FOR XML AUTO
ممنونم از پاسخ و راهنماییت من اصلا با SQl کار نکردم بنابراین اگر سوالاتم یه مقدار ابتدایی هست عذر میخوام
اینکار انجام شد اول اینکه میخواستم ببین این خروجی که از XML گرفته کجا میره و دوم اینکه من میخوام هر 1 ثانیه یکببار اینکارو انجام بده خودکار آیا امکانش هست یا خیر ؟
با سلام
همان طور که دوست عزیزمون راهنماییتون کردن در sql server 2016 مطابق راهنمای خود میکروسافت می تونید از جداولتون خروجی json بگیرید :
این عکس و بنده از سایت خود مایکروسافت گرفتم :
---------------------
اما برای نسخه های قبل از 2016 باید چیکار کرد :
استفاده از CLR : توابعی که به زبان های مبتنی بر دات نت نوشته میشن بعد به صورت اسمبلی به sql معرفی میشن
خوب برای تبدیل خروجی جداولتون به خروجی JSON :
سه تا اسمبلی باید توی sql ایجاد کنید با دسترسی Unrestricted : این نوع دسترسی دسترسی کامل است به گونه ایی که به این توابع دسترسی کامل به فایل ها و فولدرهای سرور خودتون هم می دید
ابتدا برای اینکه بتونید همچین اجازه ایی به خودتون بدین که اصلا همچین توابعی تعریف کنید ابتدا باید خاصیت TRUSTWORTHY پایگاه داده مربوطه on باشد همون طور که از معنی کلمه پیدا است با فعال کردن این گزینه بانک اطلاعاتی شما به صورت قابل اعتماد می تونه اسمبلی هایی رو به صورت Unrestricted تعریف کنه .
بعد از اینکه TRUSTWORTHY رو فعال کردیم : بروی بانک اطلاعاتیمون راست کلیک می کنیم و در بخش Option از فغال شدن آن اطمینان حاصل می کنیم :
بعد از این کار باید clr_option که اجازه میده اسمبلی های ما به توابع .net دسترسی داشته باشن و فعال کنیم :
ابتدا یک کوئری جدید میسازیم و اجراش می کنیم :
خوب حالا وقتش رسیده که سه تا اسمبلی رو به Sql سرورمون اضافه کنیم :
سپس فایل های DLL رو به ترتیب پایین اضافه می کنیم به بخش اسمبلی ها :
این سه فایل از آخر همین پست قابل دانلود هستن .
خوب حالا هر سه فایل رو باید در بخش اسمبلی ثبت کنیم یا اصطلاحا Register کنیم :
برای این کار طبق تصاویر پایین مراحل رو پیش میریم :
بعد از پنجره ی ظاهر شده بروی Browse کلیک کرده و آدرس فایل DLL رو بهش می دیم :
در اخر قبل از اینکه بروی ok کلیک کنیم باید Permission رو بروی Unrestricted بزاریم :
خوب سه تا فایل DLL رو به همون ترتیبی که در عکس واستون مشخص کردم در بخش اسمبلی تعریف می کنید :
خوب حالا پس از اضافه کردن سه اسمبلی باید از تابعی که داخل اون برای تبدیل خروجی جداول SQL به Json استفاده کنیم :
اسم اسمبلی هست : JSON.SQL
اسم کلاسمون هست : StoredProceduresAndFunctions
اسم فانکشن یا تابع ما هست : xfJSONQuery
به سه تا پارامتر بالا جهت استفاده از اسمبلی نیاز داریم :
خوب حالا باید یک فانکشن توی Sql ایجاد کنیم و بگیم که از اسمبلی با نام فلان و کلاس فلان و تابع فلان استفاده کن :
خوب همون طور که میبینید پارامتر اول این تابع دستور SQL ی هست که قرار خروجی اون دستور تبدیل به JSON بشه و پارامتر دوم هم تعیین کننده ی این است که در پارامتر اول از تک کوت یا دابل کوت استفاده کردیم که باید 0 باشه .
خوب حالا باید تابعمون و تستش کنیم :
اینم نتیجه ی نهایی :
اطلاعات جدلمون این بوده که خروجی JSon ش شده این :
حداقل لینک رو درست کنید لطفا بتونم dllها رو بردارم.پس این چه اموزشی
اگر امکان داره میتونید بگید چجوری باید خروجی Xml بگیرم؟
سلام به شما دوست عزیز
این امکان در در SQL server 2016 وجود داره در ورژن های پایین تر کار شما سخت می شه چون باید به شکل xml بگیرید و اون رو تبدیل به json کنید.