데이터 베이스 MySQL 튜토리얼 MSSQL数据库迁移之用户名问题

MSSQL数据库迁移之用户名问题

Jun 07, 2016 pm 06:00 PM
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'
......

把这段直接在新服务器上运行,或者找到相应的用户名创建,就可以解决这个问题了!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP를 mssql 데이터베이스에 연결하는 방법 PHP를 mssql 데이터베이스에 연결하는 방법 Oct 23, 2023 pm 12:02 PM

PHP가 mssql 데이터베이스에 연결하는 방법에는 PHP의 MSSQL 확장 사용, PDO 사용 등이 포함됩니다. 자세한 소개: 1. PHP의 MSSQL 확장 방법을 사용하여 PHP에 MSSQL 확장이 설치되어 있는지 확인합니다. mssql 확장이 활성화되어 있는지 여부는 PHP 구성 파일(php.ini)에서 확인할 수 있습니다. 2. PDO 메서드를 사용하여 PHP에 PDO 확장이 설치되어 있는지 확인하세요. PHP 구성 파일(php.ini)에서 pdo_sqlsrv 확장이 활성화되어 있는지 확인할 수 있습니다.

Ubuntu에서 PHP를 설치하고 MSSQL 연결을 구성하는 방법에 대한 자세한 가이드 Ubuntu에서 PHP를 설치하고 MSSQL 연결을 구성하는 방법에 대한 자세한 가이드 Feb 29, 2024 am 11:15 AM

Ubuntu는 서버를 실행하는 데 일반적으로 사용되는 인기 있는 오픈 소스 운영 체제입니다. Ubuntu에 PHP를 설치하고 MSSQL 연결을 구성하는 것은 많은 개발자와 시스템 관리자가 자주 수행해야 하는 작업 중 하나입니다. 이 기사에서는 독자들에게 PHP 설치, Apache 설정, MSSQLServer 설치 등의 단계를 포함한 자세한 가이드를 제공하고 특정 코드 예제를 첨부합니다. 1단계: PHP 및 관련 확장 설치 먼저, PHP 연결을 지원하기 위해 PHP 및 관련 확장을 설치해야 합니다.

Django 프레임워크의 데이터베이스 마이그레이션 팁 Django 프레임워크의 데이터베이스 마이그레이션 팁 Jun 17, 2023 pm 01:10 PM

Django는 Python으로 작성된 웹 개발 프레임워크로 개발자가 웹사이트와 애플리케이션을 빠르게 구축하는 데 도움이 되는 다양한 편리한 도구와 모듈을 제공합니다. 가장 중요한 기능 중 하나는 데이터베이스 마이그레이션 기능으로, 이를 통해 데이터베이스 스키마 변경 사항을 간편하게 관리할 수 있습니다. 이 글에서는 새로운 데이터베이스 마이그레이션을 시작하는 방법, 데이터베이스 마이그레이션 충돌을 감지하는 방법, 과거 데이터베이스 마이그레이션 기록을 보는 방법 등 Django에서 데이터베이스 마이그레이션을 사용하기 위한 몇 가지 팁을 소개합니다.

Ubuntu 환경에서 MSSQL 데이터베이스를 지원하기 위해 PHP를 설치하는 단계에 대한 자세한 설명 Ubuntu 환경에서 MSSQL 데이터베이스를 지원하기 위해 PHP를 설치하는 단계에 대한 자세한 설명 Feb 29, 2024 am 10:39 AM

Ubuntu 환경에서 MSSQL 데이터베이스를 지원하기 위해 PHP를 설치하는 세부 단계 웹 애플리케이션을 개발할 때 Microsoft SQL Server(MSSQL) 데이터베이스에 연결해야 하는 상황이 자주 발생합니다. Ubuntu 환경에서 PHP를 MSSQL 데이터베이스에 연결하려면 관련 소프트웨어를 설치하고 적절한 설정을 구성해야 합니다. 다음으로 Ubuntu 환경에서 MSSQL 데이터베이스를 지원하기 위해 PHP를 설치하는 단계와 특정 코드를 제공하는 단계를 자세히 소개하겠습니다.

Ubuntu에서 PHP 설치 및 MSSQL 데이터베이스 연결에 대한 전체 튜토리얼 Ubuntu에서 PHP 설치 및 MSSQL 데이터베이스 연결에 대한 전체 튜토리얼 Feb 29, 2024 am 11:18 AM

Ubuntu 운영 체제에서 PHP를 설치하고 MSSQL 데이터베이스에 연결하는 것은 많은 개발자와 시스템 관리자가 마스터해야 하는 기술 중 하나입니다. 이 기사에서는 PHP 설치, MSSQL 서버 측 드라이버 설치, MSSQL 데이터베이스에 연결하도록 PHP 구성 및 해당 코드 예제 제공을 포함한 자세한 튜토리얼을 제공합니다. 1부: PHP 설치 먼저 MSSQL 데이터베이스에 연결할 수 있도록 PHP 및 관련 확장을 설치해야 합니다. PHP 및 필요한 확장 기능을 설치하려면 터미널에 다음 명령을 입력하세요.

Zend 프레임워크를 사용하여 데이터베이스 마이그레이션(Migrations)을 구현하는 단계 Zend 프레임워크를 사용하여 데이터베이스 마이그레이션(Migrations)을 구현하는 단계 Jul 28, 2023 pm 05:54 PM

Zend 프레임워크를 사용하여 데이터베이스 마이그레이션(마이그레이션)을 구현하는 단계 소개: 데이터베이스 마이그레이션은 소프트웨어 개발 프로세스의 필수적인 부분입니다. 그 기능은 개발 중에 팀의 데이터베이스 구조 수정 및 버전 제어를 용이하게 하는 것입니다. Zend Framework는 데이터베이스 구조의 변경 사항을 쉽게 관리하는 데 도움이 되는 강력한 데이터베이스 마이그레이션 도구 세트를 제공합니다. 이 기사에서는 Zend 프레임워크를 사용하여 데이터베이스 마이그레이션을 구현하고 해당 코드 예제를 첨부하는 단계를 소개합니다. 1단계: 먼저 Zend Framework 설치

PHP 및 SQLite: 데이터베이스 마이그레이션 및 업그레이드 방법 PHP 및 SQLite: 데이터베이스 마이그레이션 및 업그레이드 방법 Jul 28, 2023 pm 08:10 PM

PHP 및 SQLite: 데이터베이스 마이그레이션 및 업그레이드 수행 방법 데이터베이스 마이그레이션 및 업그레이드는 웹 애플리케이션을 개발할 때 매우 일반적인 작업입니다. PHP와 SQLite를 사용하는 개발자의 경우 이 프로세스가 더 복잡할 수 있습니다. 이 기사에서는 데이터베이스 마이그레이션 및 업그레이드를 위해 PHP 및 SQLite를 사용하는 방법을 소개하고 참조할 수 있는 몇 가지 코드 샘플을 제공합니다. SQLite 데이터베이스 생성 먼저 SQLite 데이터베이스를 생성해야 합니다. SQLite 데이터베이스를 사용하는 것은 매우 편리합니다.

MySQL 데이터베이스를 마이그레이션하는 방법 MySQL 데이터베이스를 마이그레이션하는 방법 Feb 21, 2024 pm 04:00 PM

MySQL 데이터베이스 마이그레이션은 한 데이터베이스의 데이터와 구조를 다른 데이터베이스로 마이그레이션하는 프로세스를 의미합니다. 실제 프로젝트에서는 데이터베이스를 새 서버로 마이그레이션하거나, 데이터베이스 버전을 업그레이드하거나, 여러 데이터베이스를 병합해야 하는 상황이 발생할 수 있습니다. 다음은 MySQL 데이터베이스를 마이그레이션하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 원본 데이터베이스 내보내기 먼저 원본 데이터베이스가 있는 서버에서 내보내기 도구를 사용하여 데이터와 구조를 SQL 파일로 내보냅니다. 일반적으로 사용되는 내보내기 도구에는 mysqldump 명령이 포함됩니다.

See all articles