MSSQL数据库迁移之用户名问题
数据库A有用户A,有一些用户A创建的表和SP。迁移时将data目录下的MDF和LDF移到新的MSSQL服务器上,通过附加数据库的功能将数据库恢复。
但是,此时用户A存在于数据库A中,而新的MSSQL中虽然能创建用户A,但无法把权限赋于用户A。新创建一个用户B吧,用户A创建的表和其它信息就又无法访问。在这里找到了解决方法:在源 SQL Server 上运行以下脚本。此脚本可在 master 数据库中创建名为 sp_hexadecimal 和 sp_help_revlogin 的两个存储过程。请在完成过程的创建之后继续执行第 2 步。
注意:下面的过程取决于 SQL Server 系统表。这些表的结构在 SQL Server 的不同版本之间可能会有变化,请不要直接从系统表中选择。
----- Begin Script, Create sp_help_revlogin procedure -----
代码如下:
USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar(256) OUTPUT
AS
DECLARE @charvalue varchar(256)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @xstatus int
DECLARE @binpwd varbinary (256)
DECLARE @txtpwd sysname
DECLARE @tmpstr varchar (256)
DECLARE @SID_varbinary varbinary(85)
DECLARE @SID_string varchar(256)
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name 'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated '
+ CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
PRINT 'DECLARE @pwd sysname'
WHILE (@@fetch_status -1)
BEGIN
IF (@@fetch_status -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@xstatus & 4) = 4
BEGIN -- NT authenticated account/group
IF (@xstatus & 1) = 1
BEGIN -- NT login is denied access
SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
PRINT @tmpstr
END
ELSE BEGIN -- NT login has access
SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
PRINT @tmpstr
END
END
ELSE BEGIN -- SQL Server authentication
IF (@binpwd IS NOT NULL)
BEGIN -- Non-null password
EXEC sp_hexadecimal @binpwd, @txtpwd OUT
IF (@xstatus & 2048) = 2048
SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
ELSE
SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
PRINT @tmpstr
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
END
ELSE BEGIN
-- Null password
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
END
IF (@xstatus & 2048) = 2048
-- login upgraded from 6.5
SET @tmpstr = @tmpstr + '''skip_encryption_old'''
ELSE
SET @tmpstr = @tmpstr + '''skip_encryption'''
PRINT @tmpstr
END
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
----- End Script -----
2. 在创建 sp_help_revlogin 存储过程后,请从源服务器上的查询分析器中运行 sp_help_revlogin 过程。sp_help_revlogin 存储过程可同时用于 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 存储过程的输出是登录脚本,该脚本可创建带有原始 SID 和密码的登录。保存输出,然后将其粘贴到目标 SQL Server 上的查询分析器中,并运行它。例如:EXEC master..sp_help_revlogin
代码如下:SP_DEFAULTDB 'cyiyun','DB_WAYUP'
第1步后,在源服务器上运行sp_help_revlogin后,会产生创建用户数据的SQL,例如:
代码如下:
/* sp_help_revlogin script
** Generated 06 24 2009 1:40PM on WORKGROU-B1XTVC */
DECLARE @pwd sysname
-- Login: hxtest
SET @pwd = CONVERT (varbinary(256), 0x0100CF4E7D342B359438E4BCCA72E6C83F44FCCF30C8016286DE2B359438E4BCCA72E6C83F44FCCF30C8016286DE)
EXEC master..sp_addlogin '520web', @pwd, @sid = 0x1738BB6AD0CD24498F67FB5589E8EDCB, @encryptopt = 'skip_encryption'
......
把这段直接在新服务器上运行,或者找到相应的用户名创建,就可以解决这个问题了!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kaedah untuk php menyambung ke pangkalan data mssql termasuk menggunakan sambungan MSSQL PHP, menggunakan PDO, dsb. Pengenalan terperinci: 1. Gunakan kaedah sambungan MSSQL PHP untuk memastikan bahawa PHP telah memasang sambungan MSSQL. Anda boleh menyemak sama ada sambungan mssql didayakan dalam fail konfigurasi PHP (php.ini 2. Gunakan kaedah PDO untuk memastikan bahawa PHP telah memasang sambungan PDO). Anda boleh menyemak sama ada sambungan pdo_sqlsrv didayakan dalam fail konfigurasi PHP (php.ini).

Ubuntu ialah sistem pengendalian sumber terbuka popular yang biasa digunakan untuk menjalankan pelayan. Memasang PHP dan mengkonfigurasi sambungan MSSQL pada Ubuntu adalah salah satu operasi yang sering perlu dilakukan oleh banyak pembangun dan pentadbir sistem. Artikel ini akan memberikan pembaca panduan terperinci, termasuk langkah-langkah untuk memasang PHP, menyediakan Apache, memasang MSSQLServer, dsb., dan melampirkan contoh kod tertentu. Langkah 1: Pasang PHP dan sambungan yang berkaitan Pertama, kita perlu memasang PHP dan sambungan yang berkaitan untuk menyokong sambungan PHP

Django ialah rangka kerja pembangunan web yang ditulis dalam Python Ia menyediakan banyak alat dan modul yang mudah untuk membantu pembangun membina tapak web dan aplikasi dengan cepat. Salah satu ciri yang paling penting ialah fungsi pemindahan pangkalan data, yang boleh membantu kami menguruskan perubahan skema pangkalan data dengan mudah. Dalam artikel ini, kami akan memperkenalkan beberapa petua untuk menggunakan migrasi pangkalan data dalam Django, termasuk cara memulakan migrasi pangkalan data baharu, cara mengesan konflik migrasi pangkalan data, cara melihat rekod migrasi pangkalan data sejarah, dsb.

Langkah terperinci untuk memasang PHP untuk menyokong pangkalan data MSSQL dalam persekitaran Ubuntu Apabila membangunkan aplikasi web, anda sering menghadapi situasi di mana anda perlu menyambung ke pangkalan data Microsoft SQL Server (MSSQL). Dalam persekitaran Ubuntu, untuk menyambungkan PHP ke pangkalan data MSSQL, anda perlu memasang perisian yang berkaitan dan mengkonfigurasi tetapan yang sesuai. Seterusnya, kami akan memperkenalkan secara terperinci langkah-langkah untuk memasang PHP untuk menyokong pangkalan data MSSQL dalam persekitaran Ubuntu dan menyediakan kod khusus.

Langkah-langkah untuk melaksanakan migrasi pangkalan data (Migrasi) menggunakan rangka kerja Zend Pengenalan: Penghijrahan pangkalan data merupakan bahagian yang sangat diperlukan dalam proses pembangunan perisian Fungsinya adalah untuk memudahkan pengubahsuaian pasukan dan kawalan versi struktur pangkalan data semasa pembangunan. Rangka Kerja Zend menyediakan satu set alat pemindahan pangkalan data yang berkuasa yang boleh membantu kami mengurus perubahan pada struktur pangkalan data dengan mudah. Artikel ini akan memperkenalkan langkah cara menggunakan rangka kerja Zend untuk melaksanakan pemindahan pangkalan data dan melampirkan contoh kod yang sepadan. Langkah 1: Pasang Rangka Kerja Zend Dahulu

PHP dan SQLite: Cara melakukan migrasi pangkalan data dan menaik taraf Penghijrahan dan peningkatan pangkalan data adalah tugas yang sangat biasa apabila membangunkan aplikasi web. Untuk pembangun yang menggunakan PHP dan SQLite, proses ini mungkin lebih rumit. Artikel ini akan memperkenalkan cara menggunakan PHP dan SQLite untuk migrasi dan naik taraf pangkalan data, serta menyediakan beberapa contoh kod untuk rujukan. Cipta pangkalan data SQLite Pertama, kita perlu mencipta pangkalan data SQLite. Menggunakan pangkalan data SQLite adalah sangat mudah, kami

Memasang PHP dan menyambung ke pangkalan data MSSQL di bawah sistem pengendalian Ubuntu adalah salah satu kemahiran yang perlu dikuasai oleh ramai pembangun dan pentadbir sistem. Artikel ini akan menyediakan tutorial terperinci, termasuk memasang PHP, memasang pemacu pelayan MSSQL, mengkonfigurasi PHP untuk menyambung ke pangkalan data MSSQL dan menyediakan contoh kod yang sepadan. Bahagian Pertama: Pasang PHP Pertama, kita perlu memasang PHP dan sambungan yang berkaitan untuk dapat menyambung ke pangkalan data MSSQL. Masukkan arahan berikut dalam terminal untuk memasang PHP dan sambungan yang diperlukan

Cara menggunakan Flask-Migrate untuk pemindahan pangkalan data Pengenalan: Penghijrahan pangkalan data ialah pautan yang sangat penting semasa membangunkan aplikasi web. Apabila aplikasi kami memerlukan perubahan struktur pada pangkalan data, penghijrahan pangkalan data boleh membantu kami mengurus perubahan ini dengan mudah dan memastikan keselamatan data. Dalam rangka kerja Flask, kita boleh menggunakan Flask-Migrate untuk melaksanakan migrasi pangkalan data. Artikel ini akan memperkenalkan cara menggunakan Flask-Migrate untuk melaksanakan migrasi pangkalan data.
