SQL İş adımı farklı sql hesabı olarak çalıştır


11

Farklı bir SQL giriş hesabı olarak yürütülecek bir SQL iş adımı nasıl ayarlayacağımı merak ediyorum. Görünüşe göre mevcut bir kimlik bilgisi gerektiren Yeni bir Proxy Hesabı oluşturmam gerekiyor. Bir kimlik bilgisi oluşturduğumda tek seçeneğim Windows Oturum Açma kimlik bilgisini kullanmak.

Çalışmaya çalıştığım iş aşağıda. Başka ek ifadeler vardır, ancak iş adımı SQL oturum açma olarak çalışacak şekilde ayarlandığında başarısız olur.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Bu bir SQL Job Step ile çalıştırıldığında başarısız olur.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

Neden tüm bu tablolar yerel db üzerinde bulunduğunda uzak bir sunucuya erişmeye çalıştığı konusunda net değilim.


Bir SQL iş adımı zaten SQL örneğiyle bağlantıya sahiptir. Bu nedenle, bir parola ile yeni bir bağlantı kurmak yerine mevcut güvenlik bağlamını değiştirmeniz gerekir. Yeni bir bağlantı oluşturmak istiyorsanız, sqlcmd komutunu veya PowerShell betiğini kullanabilirsiniz; bu komut dosyası, komut dosyası içinde parametre olarak bir SQL oturum açma adı ve parolası kullanabilir. Ancak ne yapmanız gerektiğini ve depolanmış bir işlemin kendi bağlamıyla yeterli olup olmadığını düşünmelisiniz.
Rob Farley

Yanıtlar:


15

Bir T-SQL iş adımı yapılandırıyorsanız, Gelişmiş Sayfaya gidin ve "Kullanıcı olarak çalıştır" seçeneğini istediğiniz oturum açma için yapılandırın. resim açıklamasını buraya girin

PowerShell gibi diğer iş adımı türleriyle çalışıyorsanız, bir proxy hesabının yapılandırılması gerekir.


Bunu denedim ama şimdi "geçerli güvenlik bağlamına güvenilmez çünkü uzak sunucuya erişim reddedildi" diyerek iş başarısız. Ancak komut dosyasını kullanıcı olarak oturum açtığımda çalıştırırsam, sadece iyi çalıştırabilir. Sorguda bağlı sunucu yok, bu yüzden neden uzak bir sunucuya başvurduğunu anlamıyorum. Düşüncesi olan var mı?
Geoff Dawdy

Sorunuza işin ne yapmaya çalıştığını ve kesin hatayı ekleyebilmeniz, sizi bir çözüme yönlendirmemize yardımcı olacaktır.

Benim durumumda bu ayarı görmezden geldi. SQL 2012'yi kullanma.
Miguel Sv

1

EXECUTE ASBaşlangıçta kullanın veya belirli bir bağlamda yürütülen saklı yordam oluşturun.


Bu kötü olabilir. Kayıtlı bir prosedürü kısıtlı bir kullanıcıyla çağırmak istiyorsanız, sysadmin (veya iş sahibi) ayrıcalıklarına DÖNÜŞTÜRÜN. Geçici çözüm bir çerez kullanıyor olabilir.
Jens

EXECUTE AS seçeneği kullanılarak oluşturulan bir saklı yordam, ayrıcalık yükseltme işlemini gerçekleştirir ve birisinin kısmen değiştirmesine izin vermez. Depolanmış bir proc yoksa, komut dosyasının başlangıcında EXECUTE AS gibi, farklı bir oturum açma kimliğine bürünmek hile yapar.
Rob Farley
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.