سؤال
في الماضي لقد كنت قادرا على تضمين languate sripting (مثل ل JScript) داخل SQLCLR، لذلك يمكن أن تنتقل النصوص كمعلمات من الوظائف، لأداء بعض العمليات الحسابية. هنا مثال مبسط (وظيفة ssScriptExecute بإرجاع سلسلة من جميع الطباعة في البرنامج النصي):
select dbo.ssScriptExecute( 'print("Calculation: "+(1+2/3) );' )
-- Calculation: 1.6666666666666665
وأنا أحب أن تكون قادرة على تضمين وقت PowerShell في نفس الطريق. بل لقد كان كل نوع من المشاكل لأن وقت يحاول العثور المجالس التي كتبها مسار، وليس هناك مسارات داخل SQLCLR. أنا سعيد لتقديم مزيد من المعلومات عن أخطاء I الحصول عليها، ولكني أتساءل عما اذا كان قد حاول أي شخص هذا!
وشكرا!
المحلول
ويمكنني استخدام حقن رمز ايل System.Automation.Management تعديلها. جعل نسخة متغير في GetPSVersionTable () أن يكون "2.0" بعد ذلك يمكنني أن تشغيل كود بوويرشيل في SQL Server.
ومما لا شك فيه إشارة هذا دلل تعديل في مشروع استوديو المرئي.
http://www.box.net/shared/57122v6erv9ss3aopq7p
وراجع للشغل، مؤتمتة تسجيل كل DLL كنت في حاجة مع تشغيل PowerShell في SQL
ويمكنك استخدام هذا الرمز PS1
نصائح أخرى
وأعتقد أن الطريقة الوحيدة للقيام بذلك هي لإنشاء خدمة WCF استضافة بوويرشيل، والسماح SQLCLR إرسال طلب dbo.ssScriptExecute (...) لهذه الخدمة لتنفيذها. وإلى جانب من ذلك، أنا أيضا جزءا لا يتجزأ بنجاح paxScript.net في SQLCLR (مترجم ليس لديها مشاكل تسرب الذاكرة من لغات DLR).
واعتقدت SQLCLR تقتصر على مجرد مجموعة معينة من الجمعيات وPS أتمتة ليست واحدة منها.