নন-সিসাদমিন ডোমেন ব্যবহারকারীর মালিকানাধীন এসকিউএল এজেন্ট কাজ থেকে এসএসআইএস প্যাকেজ পরিচালনা করা


15

আমার কাছে দুটি এসএসআইএস প্যাকেজ রয়েছে যা কোনও সমস্যা ছাড়াই বৃহত্তর এসএসআইএস স্থাপনার অংশ হিসাবে রাতারাতি নির্ধারিত (এসকিউএল সার্ভার এজেন্টের মাধ্যমে) চালিত হয়। সবকিছু উইন্ডোজ প্রমাণীকরণ ব্যবহার করছে এবং নির্ধারিত কাজটি সিসাদমিনের (ভাল, আমি) মালিকানাধীন এবং এসকিউএল সার্ভার এজেন্ট পরিষেবা অ্যাকাউন্ট হিসাবে চালানো হয়

সুতরাং, ডেটাগুলি মূলত source system ~> transit db ~> staging ~> NDSরাতারাতি চলে ।

আমি যে দুটি এসএসআইএস প্যাকেজটি যত্ন করি সেগুলি নির্দিষ্ট নির্দিষ্ট ডেটার জন্য যথাক্রমে transit db ~> stagingএবং staging ~> NDSযন্ত্রাংশগুলি পরিচালনা করে handle

একটি ডোমেন ব্যবহারকারী (নন-সিসাদমিন) এর মধ্যে কিছু করে source systemএবং এটি আকর্ষণীয় ডেটাগুলিকে ঠেলে দেয় transit dbতাই আমার আপডেট করার জন্য কাজের সময় এই আপডেট হওয়া ডেটাটি আনার একটি উপায় প্রয়োজন NDS: সিদ্ধান্ত নেওয়া হয়েছিল যে এই ব্যক্তির সহজতম উপায়টি ট্রিগার করার জন্য যে ইটিএলটি ম্যাক্রো-সক্ষম সক্ষম এক্সেল ওয়ার্কবুকের একটি বোতামে ক্লিক করে ছিল, যা ওডিবিসি (উইন্ডোজ প্রমাণীকরণ ব্যবহার করে) এর মাধ্যমে এসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করে এবং একটি সঞ্চিত পদ্ধতি কার্যকর করে।

সঞ্চিত পদ্ধতিটি এর মতো দেখাচ্ছে:

create procedure dbo.UpdateMaterialInventory
as
begin
    execute msdb.dbo.UpdateMaterialInventory;
end

[এমএসডিবি] তে "বোন" সঞ্চিত প্রক্রিয়াটি দেখতে এমন দেখাচ্ছে:

create procedure dbo.UpdateMaterialInventory
with execute as 'SqlAgentProxy'
as
begin
    execute msdb.dbo.sp_start_job N'NDS-ManualMaterialInventory';
end

এই [স্কেলএজেন্টপ্রক্সি] ব্যবহারকারীটি একটি উইন্ডোজ ব্যবহারকারী যা আমি [এমএসডিবি] ডোমেন ব্যবহারকারীর লগইন বন্ধ করে তৈরি করেছি, যার কাছে আমি executeএই UpdateMaterialInventoryপদ্ধতির অনুমতি পেয়েছি granted এটি ডোমেন ব্যবহারকারীর executeঅনুমতি প্রদান msdb.dbo.sp_start_jobকরা এড়াবে, যা অতিরিক্ত হবে।

এসকিউএল এজেন্ট কাজটি NDS-ManualMaterialInventoryডোমেন ব্যবহারকারীর মালিকানাধীন এবং 2 ধাপ রয়েছে, প্রতিটি ধরণের [এসকিউএল সার্ভার ইন্টিগ্রেশন সার্ভিসেস প্যাকেজ] রয়েছে, রান হিসাবে সেট আপ করা হয়েছে SSISProxy

SSISProxyশংসাপত্রের নাম ব্যবহার করে একটি এসকিউএল সার্ভার এজেন্ট প্রক্সি যা [এসকিউএল সার্ভার ইন্টিগ্রেশন পরিষেবা প্যাকেজ] সাবসিস্টেমটিতে ম্যাপ করা হয়েছে SSISProxyCredentialsপ্রক্সি অ্যাকাউন্টের অধ্যক্ষগুলিতে ডোমেন ব্যবহারকারীর লগইন যুক্ত হয়েছিল ।

SSISProxyCredentialsসঙ্গে তৈরি করা হয়েছিল পরিচয় সমগ্র SSIS সংক্ষিপ্তসার ETL রাতারাতি চালাচ্ছে যে একই ডোমেইন ব্যবহারকারীর, এবং তার পাসওয়ার্ড চতুর্গুণ পরীক্ষা ছিল।

এখন, আমি যদি এটি চালাই:

execute as login=N'DOMAIN\thatperson'
exec NDS.dbo.UpdateMaterialInventory;
go

আমি এই আউটপুট পেতে:

Job 'NDS-ManualMaterialInventory' started successfully.

তবে কাজের ইতিহাস অনেক কম উত্সাহজনক গল্প বলছে:

The job failed.  The Job was invoked by User DOMAIN\thatperson.
The last step to run was step 1 (Extract).

এবং পদক্ষেপ 1 বিশদ:

Executed as user: {domain user that runs SSIS ETL overnight}.
Microsoft (R) SQL Server Execute Package Utility  Version 12.0.4100.1 for 64-bit
Copyright (C) Microsoft Corporation. All rights reserved.
Started:  2:18:50 PM  Failed to execute IS server package because of error 0x80131904.
Server: {server name}, Package path: \SSISDB\Foo\Bar\foobar.dtsx, Environment reference Id: NULL.
Description: Login failed for user '{domain user that runs SSIS ETL overnight}'.
Source: .Net SqlClient Data Provider 
Started:  2:18:50 PM  Finished: 2:18:51 PM  Elapsed:  0.094 seconds.
The package execution failed.
The step failed.

কাজ ব্যর্থ হয় এবং কিছুই কোথাও লগ হয় না।

আমি যদি চাকরীর মালিককে নিজের হিসাবে পরিবর্তন করি এবং এসকিউএল সার্ভার এজেন্ট পরিষেবা অ্যাকাউন্ট হিসাবে চালিত পদক্ষেপগুলি পরিবর্তন করি তবে, চাকরীটি চালিত হয়, সফল হয় এবং [মেটাডাটা] তে 1,067 সারি লগ করে [[dbo]] [sysssislog]।

দেখে মনে হচ্ছে প্রক্সি / শংসাপত্রগুলি কীভাবে সেট আপ হয় সে সম্পর্কে সঠিক কিছু নেই। কোন অংশটি আমি ভুল করছি?

উত্তর:


17

সমস্যাটি তার চেয়ে জটিল দেখায়। যেহেতু আপনি এসকিউএল 2014 ব্যবহার করছেন আপনি সম্ভবত 2012 সালে প্রবর্তিত নতুন সুরক্ষা বৈশিষ্ট্য দ্বারা দংশন করছেন।

প্রকৃতপক্ষে একমাত্র বিষয়টি হ'ল:

Server: {server name}, Package path: \SSISDB\Foo\Bar\foobar.dtsx, Environment reference Id: NULL.   
Description: Login failed for user '{domain user that runs SSIS ETL overnight}'.

আপনার প্রক্সি ব্যবহারকারীর লগইনে সম্ভবত এসআইএসআইএসডিবি ক্যাটালগের অ্যাক্সেস নেই (যদিও তার এসকিউএল সার্ভারে অ্যাক্সেস থাকতে পারে)।
আপনি একটি SSISDB ব্যবহারকারীকে লগইন ম্যাপ প্রয়োজন এবং SSISDB ফোল্ডার / ইন্টিগ্রেশন পরিষেবায় প্রকল্পে কনফিগার অ্যাক্সেস।

দয়া করে এই এমএসডিএন ব্লগ পোস্টটি এসএসআইএস ক্যাটালগ অ্যাক্সেস কন্ট্রোল টিপস এবং এসকিউএল 2012 এসএসআইএস ক্যাটালগ অনুমতিগুলি দেখুন

আপনার কাছে প্যাকেজটি আসলে লোড হয়ে গেলে আপনি অন্যান্য সুরক্ষা প্রসঙ্গ সমস্যার সাথে চালাতে পারেন তবে ইন্টিগ্রেশন পরিষেবাদি থেকেই আপনাকে আরও ভাল লগিং করা উচিত।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.