SQL Server 2008 R2: Bilgisayar adı değişikliğinden sonraki sorunlar


10

Yerel bir SQL Server örneği barındıran bir uzak sunucunun bilgisayar adını değiştirdikten sonra kafa karıştırıcı bir sorun yaşıyorum.

Temel olarak, uzak bir sunucu bir siteden diğerine taşındı. Bunu kolaylaştırmak için, eski veritabanını yeni bir veritabanı adına yedekledim ve geri yükledim, böylece istemci yazılımı için yeni bir veritabanı olarak kullanılabilmesi için verileri temizledim. Ayrıca, her sunucuyu site numarasına göre tanımlamak için yaptığımız gibi bilgisayar adını da değiştirdim.

Veritabanı istemci yazılımı iyi bağlanabilir ve doğrudan SQL Server para cezası oturum açabilirsiniz. Ancak, SQL Server Agent işlerimden biri, olay günlüğünde bir hata ile başarısız olur:

SQL Server Zamanlanmış İş 'Gece Sıfırlama' (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - Durum: Başarısız - Çağrıldığı tarih: 2012-02-07 08:10:05 - İleti: İş başarısız oldu. Nightly Reset işinin sahibinin (Site-19 \ Admin) sunucu erişimine sahip olup olmadığı belirlenemedi (nedeni: Windows NT grubu / 'Site-19 \ Admin' kullanıcısı, hata kodu 0x534 hakkında bilgi alınamadı. [SQLSTATE 42000] ( Hata 15404)).

Şimdi, 'Site-19' değiştirilen ve sunucu sıfırlanan eski bilgisayar adıdır. Yeni site numarasını 'Site-28' kullanarak manuel olarak bağlarım ve bana Site-28 \ Admin ile SQL Server'a bağlı olduğumu gösteriyor. Ancak, Agent işinin özelliklerine baktığımda, sahibinin Site-19 \ Yönetici olduğunu gösterir ve kullanıcıları değiştirmek için göz atmaya çalıştığımda, Site-28 \ Admin bir seçenek olarak görünmez , yalnızca Site-19 \ Admin. Bu işten yeni bir iş çıkarırsam ve sahibini el ile 'Site-28 \ Admin' olarak değiştirirsem, yeni iş 'Site-19 \ Admin' sahibi ile oluşturulur.

Sys.servers (veya sp_helpserver aracılığıyla) bakarak, sadece bir giriş var: geçerli bilgisayar adı. Ancak, SELECT @@ SERVERNAME orijinal geliştirme makinesi adını döndürür (iki ad değişiklik önce).

Kısacası, artık var olmayan bir kullanıcıya ait olduğu için bu önemli SQL Server Agent işini çalıştıramıyorum ve nasıl değiştirileceğini veya doğru kullanıcı olarak nasıl oluşturulacağını anlayamıyorum.


Bağlantı için teşekkürler. Senin önerin, ben de orada sordum. Burada da geçerli olduğunu düşünüyorum, çünkü soru daha altyapı ile ilgili olsa da, cevap büyük olasılıkla kod içerecektir ve burada da bol miktarda SQL Server metodolojisi sorusu vardır.
Geo Ego

Ve 'Site-28' sunucusunu düşürürseniz ne olur? Ne sp_helpserver görüntüler? Eski işi silip yeni bir iş oluşturamaz mısınız?

1
İlginç bir şekilde, 'Site-28'i bırakmaya çalıştığımda, bulunamadığını söylüyor. Eklemeye çalıştığımda, zaten var olduğunu söylüyor. Sihirbazı kullanarak ya da orijinalinden komut dosyası oluşturarak yeni bir iş oluşturursam, her zaman sahibi olarak 'Site-19 \ Admin' ile oluşturur.
Geo Ego

Eski fiziksel sunucuya yeni bir ad verildi (ve bu değişiklik DNS'de de yapıldı) ve yeniden adlandırılan kutudaki SELECT @@ SERVERNAME yeni adını döndürüyor mu?
jl01

1
Aktarılan soruyu bu soru ile birleştirdim, böylece tüm cevaplar birleştirildi.
jcolebrand

Yanıtlar:


7

Sp_addserver kullanarak yeni sunucu adını eklediğinizde, "yerel" atamayı eklemeyi hatırladınız mı? @@ SERVERNAME için meta verileri güncelleyen etiket. Daha fazla bilgi.

sp_addserver 'servername', local

@@ServerNameSQL Server'ı yeniden
fiat

7

Cevabı dün bir arkadaşımın yardımıyla buldum. Kullanmaya çalıştığım Windows girişi dışında bir kullanıcıyla SSMS ile giriş yapmak, eski girişi silmek ve Windows girişimi tekrar eklemek zorunda kaldım. Bundan sonra, işin sahipliğini düzgün bir şekilde aktarabildim, SQL kullanıcı verilerini Windows'tan alabildi ve her şey dünyaya uygun oldu.


Bu AND @ brian-knight cevabını uyguladım. Db sahipliklerini değiştirmek için bunu kullandım SELECT 'use ' + DB_NAME(database_id) + ';EXEC sp_changedbowner ''sa'';' FROM sys.databases where DB_NAME(database_id) like 'MyDbs%';. Bundan sonra kötü oturum
fiat

4

TÜM Tamam alırsanız, sorunları tanımlamak ve doğru damla ve ifadeler oluşturmak için aşağıdakileri kullanın, o zaman başka bir şey yapmanız gerekmez, aksi takdirde komutları çalıştırmak gerekir.

declare @currentName as nvarchar(128)
declare @newName as varchar(max)
declare @serverName as varchar(max)
declare @serverInstance as varchar(max)

select  @currentName = @@SERVERNAME
select @serverInstance = cast(serverproperty('InstanceName') as varchar(max))
select  @serverName = cast(serverproperty('MachineName') as varchar(max))

set @newName = @serverName

if (@serverInstance <> '') 
begin
      set @newName = @serverName + '\' + @serverInstance
end

if (@currentName <> @newName)
Begin
      print 'sp_dropserver ''' + @currentName + '''';
      print 'go'
      print 'sp_addserver ''' + @newName + ''',local'
      print 'go'
end
else
Print 'ALL OK'

Bu komut dosyasını kullanarak, eski sunucu adını el ile bırakıp yenisini eklemem gerektiğini belirleyebildim. Bunu yaptım, ama yine de aynı sorunlarım var.
Geo Ego

Örneği yeniden başlattınız mı?

Evet, örnek daha sonra yeniden başlatıldı.
Geo Ego

Üzgünüm dostum yayılmalıyız, sorunun ne olabileceğinden emin değilim.

0

Benzer bir sorun vardı: SQL Server ve SQL Server Agent'ın çalıştığı bilgisayarın ana bilgisayar adını değiştirdi. İşler atandı. Bu yeni geçici kullanıcı / bırakmayı kullanarak bir geçici kullanıcı / oturum açma oluşturduktan ve oturum açma adını (genel ve sysadmin priv! Belki aynı değişikliği yansıtacak şekilde bir sistem tablosunu manipüle edebilirsiniz; ancak yukarıdaki yöntem o kadar riskli değildir.

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.