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'
......
把这段直接在新服务器上运行,或者找到相应的用户名创建,就可以解决这个问题了!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Zu den Methoden, mit denen PHP eine Verbindung zur MSSQL-Datenbank herstellen kann, gehören die Verwendung der MSSQL-Erweiterung von PHP, die Verwendung von PDO usw. Detaillierte Einführung: 1. Verwenden Sie die MSSQL-Erweiterungsmethode von PHP, um sicherzustellen, dass PHP die MSSQL-Erweiterung installiert hat. Sie können überprüfen, ob die MSSQL-Erweiterung in der PHP-Konfigurationsdatei (php.ini) aktiviert ist. 2. Verwenden Sie die PDO-Methode, um sicherzustellen, dass PHP die PDO-Erweiterung installiert hat. Sie können überprüfen, ob die pdo_sqlsrv-Erweiterung in der PHP-Konfigurationsdatei (php.ini) aktiviert ist.

Ubuntu ist ein beliebtes Open-Source-Betriebssystem, das häufig zum Betrieb von Servern verwendet wird. Die Installation von PHP und die Konfiguration von MSSQL-Verbindungen unter Ubuntu gehören zu den Vorgängen, die viele Entwickler und Systemadministratoren häufig ausführen müssen. Dieser Artikel bietet den Lesern eine detaillierte Anleitung, einschließlich der Schritte zur Installation von PHP, der Einrichtung von Apache, der Installation von MSSQLServer usw. sowie dem Anhängen spezifischer Codebeispiele. Schritt 1: PHP und zugehörige Erweiterungen installieren Zuerst müssen wir PHP und zugehörige Erweiterungen installieren, um PHP-Verbindungen zu unterstützen

Django ist ein in Python geschriebenes Webentwicklungs-Framework. Es bietet viele praktische Tools und Module, die Entwicklern beim schnellen Erstellen von Websites und Anwendungen helfen. Eine der wichtigsten Funktionen ist die Datenbankmigrationsfunktion, die uns dabei helfen kann, Datenbankschemaänderungen einfach zu verwalten. In diesem Artikel stellen wir einige Tipps zur Verwendung der Datenbankmigration in Django vor, darunter das Starten einer neuen Datenbankmigration, das Erkennen von Datenbankmigrationskonflikten, das Anzeigen historischer Datenbankmigrationsdatensätze usw.

Detaillierte Schritte zur Installation von PHP zur Unterstützung der MSSQL-Datenbank in einer Ubuntu-Umgebung. Bei der Entwicklung von Webanwendungen kommt es häufig vor, dass Sie eine Verbindung zur Microsoft SQL Server-Datenbank (MSSQL) herstellen müssen. Um in der Ubuntu-Umgebung PHP mit der MSSQL-Datenbank zu verbinden, müssen Sie entsprechende Software installieren und entsprechende Einstellungen konfigurieren. Als nächstes werden wir die Schritte zur Installation von PHP zur Unterstützung der MSSQL-Datenbank in der Ubuntu-Umgebung im Detail vorstellen und spezifischen Code bereitstellen.

Schritte zur Implementierung von Datenbankmigrationen (Migrationen) mithilfe des Zend-Frameworks Einführung: Die Datenbankmigration ist ein unverzichtbarer Teil des Softwareentwicklungsprozesses. Ihre Funktion besteht darin, die Änderung und Versionskontrolle der Datenbankstruktur durch das Team während der Entwicklung zu erleichtern. Das Zend Framework bietet einen leistungsstarken Satz an Datenbankmigrationstools, die uns dabei helfen können, Änderungen an der Datenbankstruktur einfach zu verwalten. In diesem Artikel werden die Schritte zur Verwendung des Zend-Frameworks zur Implementierung der Datenbankmigration vorgestellt und entsprechende Codebeispiele angehängt. Schritt 1: Installieren Sie zuerst das Zend Framework

PHP und SQLite: So führen Sie eine Datenbankmigration und -aktualisierung durch. Die Datenbankmigration und -aktualisierung ist eine sehr häufige Aufgabe bei der Entwicklung von Webanwendungen. Für Entwickler, die PHP und SQLite verwenden, kann dieser Prozess komplizierter sein. In diesem Artikel wird die Verwendung von PHP und SQLite für die Datenbankmigration und -aktualisierung vorgestellt und einige Codebeispiele als Referenz bereitgestellt. Erstellen Sie eine SQLite-Datenbank. Zuerst müssen wir eine SQLite-Datenbank erstellen. Die Verwendung einer SQLite-Datenbank ist für uns sehr praktisch

Die Installation von PHP und die Verbindung zur MSSQL-Datenbank unter dem Ubuntu-Betriebssystem gehört zu den Fähigkeiten, die viele Entwickler und Systemadministratoren beherrschen müssen. Dieser Artikel bietet ein detailliertes Tutorial, einschließlich der Installation von PHP, der Installation des serverseitigen MSSQL-Treibers, der Konfiguration von PHP für die Verbindung mit der MSSQL-Datenbank und der Bereitstellung entsprechender Codebeispiele. Teil eins: PHP installieren Zuerst müssen wir PHP und zugehörige Erweiterungen installieren, um eine Verbindung zur MSSQL-Datenbank herstellen zu können. Geben Sie im Terminal den folgenden Befehl ein, um PHP und die erforderlichen Erweiterungen zu installieren

Unter MySQL-Datenbankmigration versteht man den Prozess der Migration von Daten und Strukturen in einer Datenbank in eine andere. In tatsächlichen Projekten kann es vorkommen, dass Sie die Datenbank auf einen neuen Server migrieren, die Datenbankversion aktualisieren, mehrere Datenbanken zusammenführen usw. müssen. Im Folgenden wird die Migration einer MySQL-Datenbank vorgestellt und spezifische Codebeispiele bereitgestellt. Exportieren Sie die Originaldatenbank. Verwenden Sie zunächst das Exporttool auf dem Server, auf dem sich die Originaldatenbank befindet, um die Daten und die Struktur in eine SQL-Datei zu exportieren. Zu den häufig verwendeten Exporttools gehört der Befehl mysqldump
