Bagaimana cara mengubah SID Windows memengaruhi SQL Server?

11

Admin Windows kami telah mengidentifikasi masalah dengan cara mereka mengkloning server Windows. Rupanya beberapa server yang dikloning berakhir dengan SID yang sama di tingkat OS. Saya dengar Microsoft tidak mendukung server yang memiliki duplikat SID. Oleh karena itu, SID pada server ini perlu diubah.

Saya ingin tahu bagaimana itu mempengaruhi SQL Server. Ada ide? Bagaimana pengaruhnya terhadap server database berkerumun?

Ra Osolage
sumber
Ada banyak sekali alasan untuk tidak mengkloning windows tetapi SID bukan salah satunya
Jim B

Jawaban:

9

Biarkan SID sendiri. NewSID telah pensiun karena Mark Russinovich melakukan penggalian dan menemukan bahwa keseluruhan "duplikat SID == buruk!" baris yang kita semua telah hancurkan dalam tengkorak kita selama dekade terakhir ini hanyalah omong kosong.

Lihat entri blog terbaru Mark: The Machine SID Duplication Myth .

ThatGraemeGuy
sumber
6

Saya pasti akan merekomendasikan untuk tidak mengubah SID, sampai setelah Anda membaca: Mengubah Mesin SID Dengan NewSID Breaks SQL Server (Dan Bagaimana Cara Memperbaikinya)

Rupanya, beberapa server yang dikloning berakhir dengan SID yang sama di tingkat OS.

Saya akan bahaya menebak SEMUA sistem Anda yang dikloning memiliki SID yang sama. GhostWalk dapat membuat ulang SID untuk Anda. Menggunakan sysprep pada gambar klon awal Anda bisa menghemat Anda di sistem masa depan juga.

Jika Anda menginstal SQL Server, JANGAN MENGUBAH SID. Hal-hal buruk akan terjadi.

Joseph Kern
sumber
+1 untuk SysPrep, yaitu AFAIK solusi yang didukung untuk skenario seperti itu.
Michael Stum
1
-1 untuk tidak menyebutkan bahwa perubahan sisi tidak didukung-termasuk sysprep, jika sql diinstal.
Jim B
Jika server telah menjalankan & memiliki hal-hal yang diinstal, maka saya akan mengatakan Anda cukup disembunyikan. Anda seharusnya mengubah SID segera setelah Anda mengkloning server. Saya kagum Anda bisa bergabung dengan dua server dengan SID yang sama dengan domain!
Nick Kavadias
2

Anda dapat menggunakan sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

Ubah nama komputer dalam SQL:

use master
sp_dropserver '<old computer name>'
GO
sp_addserver '<new computer name>', local
GO

sp_helpserver -- will show you the new computer name

Kemudian restart layanan server sql.

Dave
sumber
Terima kasih telah menunjukkan penggantian nama manual dari server sql. Ini sering dilupakan dalam klon SQL (Aku clone saya dengan sysprep)
Precipitous
2

Jika basis data Anda melakukan transaksi jarak jauh menggunakan Koordinator Transaksi Terdistribusi Microsoft, perlu diketahui bahwa mesin yang dikloning juga memiliki ID MSDTC yang sama, yang bukan SID dan tidak diubah oleh NewSID.

Anda akan melihat ini di Penampil Acara:

MS DTC lokal mendeteksi bahwa MS DTC di SERVER memiliki identitas unik yang sama dengan MS DTC lokal. Ini berarti bahwa kedua MS DTC tidak akan dapat berkomunikasi satu sama lain. Masalah ini biasanya terjadi jika salah satu sistem dikloning menggunakan alat kloning yang tidak didukung. MS DTC mengharuskan sistem dikloning menggunakan alat kloning yang didukung seperti SYSPREP. Menjalankan 'msdtc -uninstall' dan kemudian 'msdtc -install' dari command prompt akan memperbaiki masalah. Catatan: Menjalankan 'msdtc -uninstall' akan mengakibatkan sistem kehilangan semua informasi konfigurasi MS DTC.

Saya menyelesaikannya seperti ini:

msdtc -uninstall

Tunggu beberapa menit, lalu

msdtc -install
sc config msdtc start= auto
sc start msdtc
crb
sumber
1
Untuk beberapa alasan aneh, "sc config" memerlukan spasi antara "start =" dan "auto", yaitu "sc config msdtc start = auto".
ThatGraemeGuy
Terima kasih - Saya memiliki ruang yang ada tapi diedit itu ketika saya diposting berpikir itu salah ketik :)
crb
2

Gunakan alat milik Microsoft, NewSID atau sysprep, yang seperti menginstal ulang windows tanpa menyalin semua file.

Saya tidak berpikir Anda dapat bergabung dengan dua komputer ke domain yang sama dengan SID yang sama, jadi saya akan mengatakan bahwa SQL Server cluster tidak akan memiliki peluang karena server harus berada pada domain.

Nick Kavadias
sumber
1

Satu-satunya cara yang didukung untuk mengkloning sistem adalah dengan sysprep. Ada banyak alasan mengapa tidak mengkloning server sql:

-Ini tidak didukung oleh Microsoft CSS.

-SQL tidak akan berfungsi dengan baik sampai "diubah namanya".

-Jika Anda memiliki layanan pelaporan, itu akan disemprot juga.

-Akun Sistem dan Layanan Jaringan akan mendapatkan SID dan kata sandi baru, jadi jika Anda telah menggunakannya sebagai akun layanan, akan ada sedikit kesulitan.

-SQL Server membuat beberapa grup lokal dengan format. SQLServer2005MSSQLUser $$ MSSQLSERVER. Tidak didukung untuk mengganti nama ini

Untuk memperbaiki situasi saya ingin-

Hancurkan kluster, bangun kembali sistem, instal SQL, buat kluster baru, jalankan cadangan di server yang belum dibangun kembali - lalu hentikan, kembalikan cadangan itu ke kluster baru, arahkan aplikasi ke kluster baru, buat kembali sisanya server dan menambahkannya ke cluster baru

- Atau (mungkin lebih mudah) mengapa tidak membangun server baru dengan nama baru (ini akan memecahkan masalah potensial dengan SID dari jenis apa pun) kemudian memecah cluster menginstal SQL bergabung ke cluster, failover ke kotak itu kemudian ulangi proses, yang cara tidak downtime dan tidak perlu untuk backup / restore (walaupun saya sarankan Anda tetap melakukannya). Kami menggunakan zznode1, zznode2 dan nama cluster dengan cara itu membuat zznode3 dan menggabungkannya ke cluster adalah sederhana karena node tidak direferensikan ketika di cluster. Semoga itu bisa membantu.

Jim B
sumber