日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

在SQL Server實(shí)例之間傳輸?shù)卿浐兔艽a_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:也談如何縮小SQL SERVER日志文件
前幾天也碰到日志文件過大的問題,數(shù)據(jù)庫實(shí)際大小為600M, 日志文件實(shí)際大小為33M, 但日志文件占用空間為2.8G! 試了多種方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都沒辦法將文件縮小。無論

概要

在將數(shù)據(jù)庫移動到新服務(wù)器后,用戶可能無法登錄到新服務(wù)器。相反,他們會收到下面的錯誤消息:

Msg 18456, Level 16, State 1

Login failed for user '%ls'.

您必須將登錄和密碼傳輸?shù)叫路⻊?wù)器。本文介紹如何將登錄和密碼傳輸?shù)叫路⻊?wù)器。

如何在運(yùn)行 SQL Server 7.0 的服務(wù)器之間傳輸?shù)卿浐兔艽a

SQL Server 7.0 數(shù)據(jù)轉(zhuǎn)換服務(wù) (DTS) 對象傳輸功能可在兩臺服務(wù)器之間傳輸?shù)卿浐陀脩簦粋鬏?SQL Server 驗(yàn)證登錄的密碼。要將登錄和密碼從一臺運(yùn)行 SQL Server 7.0 的服務(wù)器傳輸?shù)搅硪慌_運(yùn)行 SQL Server 7.0 的服務(wù)器,請執(zhí)行“在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案”一節(jié)中的步驟。

如何從 SQL Server 7.0 向 SQL Server 2000 或者在運(yùn)行 SQL Server 2000 的服務(wù)器之間傳輸?shù)卿浐兔艽a

要從 SQL Server 7.0 服務(wù)器向 SQL Server 2000 的一個實(shí)例或者在 SQL Server 2000 的兩個實(shí)例之間傳輸?shù)卿浐兔艽a,可以使用 SQL Server 2000 中新的 DTS 包傳輸?shù)卿浫蝿?wù)。為此,請按照下列步驟操作:1. 連接到 SQL Server 2000 目標(biāo)服務(wù)器,移動到 SQL Server 企業(yè)管理器中的數(shù)據(jù)轉(zhuǎn)換服務(wù),展開此文件夾,右鍵單擊“本地包”,然后單擊“新增包”。

1、在 DTS 程序包設(shè)計器打開后,單擊“任務(wù)”菜單上的“傳輸?shù)卿浫蝿?wù)”。根據(jù)需要完成有關(guān)“源”、“目標(biāo)”和“登錄”選項(xiàng)卡的信息。

重要說明:SQL Server 2000 目標(biāo)服務(wù)器不能運(yùn)行 64 位版本的 SQL Server 2000。64 位版本 SQL Server 2000 的 DTS 組件不可用。如果要從其他計算機(jī)上的 SQL Server 實(shí)例中導(dǎo)入登錄,您的 SQL Server 實(shí)例必須在域帳戶下運(yùn)行才能完成此任務(wù)。

注意:DTS 方法將傳輸密碼,但不會傳輸原始 SID。如果登錄不是使用原始 SID 創(chuàng)建的,而且用戶數(shù)據(jù)庫也被傳輸?shù)揭慌_新服務(wù)器,則該數(shù)據(jù)庫用戶將從該登錄中孤立出去。要傳輸原始 SID 并繞過被孤立的用戶,請執(zhí)行“在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案”一節(jié)中的步驟。

在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案

此方法適用于以下情況:

• 從 SQL Server 7.0 向 SQL Server 7.0 傳輸?shù)卿浐兔艽a。

• 從 SQL Server 7.0 向 SQL Server 2000 傳輸?shù)卿浐兔艽a。

• 從 SQL Server 7.0 向 SQL Server 2005 傳輸?shù)卿浐兔艽a。

• 在運(yùn)行 SQL Server 2000 的服務(wù)器之間傳輸?shù)卿浐兔艽a。

• 從 SQL Server 2000 向 SQL Server 2005 傳輸?shù)卿浐兔艽a。

注意:請查看本文末尾的備注,以了解有關(guān)下列步驟的重要信息。

要在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a,請按下列步驟操作:1. 在源 SQL Server 上運(yùn)行以下腳本。此腳本可在 master 數(shù)據(jù)庫中創(chuàng)建名為 sp_hexadecimal 和 sp_help_revlogin 的兩個存儲過程。請?jiān)谕瓿蛇^程的創(chuàng)建之后繼續(xù)執(zhí)行第 2 步。

注意:下面的過程取決于 SQL Server 系統(tǒng)表。這些表的結(jié)構(gòu)在 SQL Server 的不同版本之間可能會有變化,請不要直接從系統(tǒng)表中選擇。

----- 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 <= @length)
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、在創(chuàng)建 sp_help_revlogin 存儲過程后,請從源服務(wù)器上的查詢分析器中運(yùn)行 sp_help_revlogin 過程。sp_help_revlogin 存儲過程可同時用于 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 存儲過程的輸出是登錄腳本,該腳本可創(chuàng)建帶有原始 SID 和密碼的登錄。保存輸出,然后將其粘貼到目標(biāo) SQL Server 上的查詢分析器中,并運(yùn)行它。例如:EXEC master..sp_help_revlogin

備注

• 在目標(biāo) SQL Server 上運(yùn)行輸出腳本之前,請認(rèn)真查看此腳本。如果必須將登錄傳輸?shù)脚c SQL Server 源實(shí)例不在同一個域中的 SQL Server 實(shí)例,請編輯由 sp_help_revlogin 過程生成的腳本,并在 sp_grantlogin 語句中將域名替換為新的域名。由于在新域中被授予訪問權(quán)的集成登錄與原始域中的登錄具有不同的 SID,因此數(shù)據(jù)庫用戶將從這些登錄中孤立出去。要解決這些孤立用戶,請查看以下項(xiàng)目符號項(xiàng)中引用的文章。如果在同一個域中的 SQL Server 實(shí)例之間傳輸集成登錄,則會使用相同的 SID,而且用戶不太可能被孤立。

• 在移動登錄之后,用戶將不再具有訪問已被同時移動的數(shù)據(jù)庫的權(quán)限。此問題稱為“孤立用戶”。如果嘗試將訪問此數(shù)據(jù)庫的權(quán)限授予該登錄,則可能會失敗,這表明該用戶已存在:

Microsoft SQL-DMO (ODBC SQLState:42000) Error 15023:User or role '%s' already exists in the current database.

有關(guān)如何將登錄映射到數(shù)據(jù)庫用戶以解決孤立的 SQL Server 登錄和集成登錄的說明,請查看相關(guān)文章:

(http://support.microsoft.com/kb/240872/) 如何解決在運(yùn)行 SQL Server 的服務(wù)器之間移動數(shù)據(jù)庫時的權(quán)限問題。

有關(guān)使用 sp_change_users_login 存儲過程逐個解決孤立用戶(僅能解決從標(biāo)準(zhǔn) SQL 登錄中孤立出去的用戶)的說明,請查看相關(guān)文章:

(http://support.microsoft.com/kb/274188/) PRB:聯(lián)機(jī)叢書中的“孤立用戶疑難解答”主題不完整。

• 如果傳輸?shù)卿浐兔艽a是向運(yùn)行 SQL Server 的新服務(wù)器移動數(shù)據(jù)庫的一部分,請查看相關(guān)文章,以了解對所涉及的工作流程和步驟的說明:

(http://support.microsoft.com/kb/314546/) 如何在運(yùn)行 SQL Server 的計算機(jī)之間移動數(shù)據(jù)庫。

• 能夠這樣做的原因在于:sp_addlogin 系統(tǒng)存儲過程中的 @encryptopt 參數(shù)允許通過使用加密密碼來創(chuàng)建登錄。有關(guān)此過程的更多信息,請參見 SQL Server 聯(lián)機(jī)叢書中的“sp_addlogin (T-SQL)”主題。

• 默認(rèn)情況下,只有 sysadminfixed 服務(wù)器角色的成員可以從 sysxlogins 表中進(jìn)行選擇。除非 sysadmin 角色的成員授予了必要的權(quán)限,否則最終用戶將無法創(chuàng)建或運(yùn)行這些存儲過程。

• 此方法不會嘗試傳輸特定登錄的默認(rèn)數(shù)據(jù)庫信息,因?yàn)槟J(rèn)數(shù)據(jù)庫并不始終存在于目標(biāo)服務(wù)器中。要為某個登錄定義默認(rèn)數(shù)據(jù)庫,您可以使用 sp_defaultdb 系統(tǒng)存儲過程,方法是將登錄名和默認(rèn)數(shù)據(jù)庫作為參數(shù)傳遞給該過程。有關(guān)使用此過程的更多信息,請參見 SQL Server 聯(lián)機(jī)叢書中的“sp_defaultdb”主題。

• 在 SQL Server 實(shí)例之間傳輸?shù)卿浀倪^程中,如果源服務(wù)器的排序順序不區(qū)分大小寫,而目標(biāo)服務(wù)器的排序順序區(qū)分大小寫,則在將登錄傳輸?shù)侥繕?biāo)服務(wù)器后,必須以大寫形式輸入密碼中的所有字母字符。如果源服務(wù)器的排序順序區(qū)分大小寫,而目標(biāo)服務(wù)器的排序順序不區(qū)分大小寫,則無法通過本文所述的步驟使用已傳輸?shù)牡卿涍M(jìn)行登錄,除非原始密碼不包括字母字符或原始密碼中的所有字母字符都是大寫字符。如果兩個服務(wù)器都區(qū)分大小寫或者都不區(qū)分大小寫,則不會出現(xiàn)此問題。這是 SQL Server 處理密碼的方式所帶來的副作用。有關(guān)更多信息,請參見 SQL Server 7.0 聯(lián)機(jī)叢書中的“Effect on Passwords of Changing Sort Orders”(更改排序順序?qū)γ艽a的影響)主題。

• 在目標(biāo)服務(wù)器上運(yùn)行“sp_help_revlogin”腳本的輸出時,如果該目標(biāo)服務(wù)器已經(jīng)定義了一個登錄,且該登錄名與腳本輸出中的某個登錄名相同,則在執(zhí)行“sp_help_revlogin”腳本的輸出時,可能會看到下面的錯誤:

Server:Msg 15025, Level 16, State 1, Procedure sp_addlogin, Line 56

The login 'test1' already exists.

同樣,如果此服務(wù)器上存在其他登錄,且其 SID 值與您要嘗試添加的登錄的 SID 值相同,則會收到以下錯誤消息:

Server:Msg 15433, Level 16, State 1, Procedure sp_addlogin, Line 93

Supplied parameter @sid is in use.

因此,您必須仔細(xì)復(fù)查這些命令的輸出,檢查 sysxlogins 表的內(nèi)容,并相應(yīng)地解決這些錯誤。

• 特定登錄的 SID 值用作在 SQL Server 中實(shí)現(xiàn)數(shù)據(jù)庫級別訪問的基礎(chǔ)。因此,如果同一登錄在該數(shù)據(jù)庫級別(在該服務(wù)器上的兩個不同數(shù)據(jù)庫中)有兩個不同的 SID 值,則此登錄將僅能訪問其 SID 與該登錄的 syslogins 中的值相匹配的數(shù)據(jù)庫。如果所討論的兩個數(shù)據(jù)庫已從兩個不同的服務(wù)器合并在一起,則可能出現(xiàn)這種情形。要解決此問題,必須使用 sp_dropuser 存儲過程從具有不匹配 SID 的數(shù)據(jù)庫中手動刪除所討論的登錄,然后再使用 sp_adduser 存儲過程添加它。

這篇文章中的信息適用于:

• Microsoft SQL Server 7.0 標(biāo)準(zhǔn)版

• Microsoft SQL Server 2000 Personal Edition Service Pack 3

• Microsoft SQL Server 2000 標(biāo)準(zhǔn)版

• Microsoft SQL Server 2000 Workgroup Edition

• Microsoft SQL Server 2000 Developer Edition

• Microsoft SQL Server 2000 Enterprise Edition

• Microsoft SQL Server 2005 Standard Edition

• Microsoft SQL 2005 Server Workgroup

• Microsoft SQL Server 2005 Developer Edition

• Microsoft SQL 2005 Server Enterprise

分享:Sql2005如何用dtexec運(yùn)行ssis(DTS)包
  一、首先在Business Intelligence中設(shè)計好包,并調(diào)試通過。   二、選用dtexec工具運(yùn)行包   (一) 打開 xp_cmdshell 選項(xiàng)   SQL Server 2005 中引入的 xp_cmdshell 選項(xiàng)是服務(wù)

來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時間:2008-08-22
相關(guān)Mssql數(shù)據(jù)庫教程