㈠ sqlserver怎麼把伺服器上的資料庫備份到本地,不是區域網的伺服器
No1:先在行程電腦上備份:
backup database 資料庫名 to disk='文件路徑'
然後把備件的文件復制到自己電腦上:
restore database 資料庫名 from disk='文件路徑'
No2:
備份遠程SQLSERVER資料庫到本地
1 知道遠程MSSQL IP 用戶名 密碼
2 在本地MSSQL企業管器里新注冊 遠程資料庫
3 選中所有遠程資料庫的用戶表,右鍵 所有任務 生成SQL腳本 並在選項里選中 編寫主鍵 外鍵 ......
4 在本地新建一資料庫,在新建資料庫中執行新生成的SQL腳本,注意腳本中的所屬用戶 一般全部替換為[dbo] 然後全部執行。
5 然後在新建資料庫中點 右鍵 所有任務 導入數據,先填源資料庫,也就是遠程資料庫,後填目的資料庫,也就是新資料庫 最後確定。這樣就可以把遠程的資料庫備份到本地
No3:伺服器上的SQLSERVER2000資料庫導到本地
一,備份SQLSERVER2000,生成.bak文件,壓縮成包,下載到本地,解壓,還原資料庫,
二,本sql客戶端遠程鏈接伺服器,備份,或導出到本地資料庫(這個看你網速了),同時要開放伺服器1433埠,很不安全
三,分離資料庫,考下_dat和log,,考下這兩個文件,伺服器上再附加,本地用這兩個文件附加
㈡ 如何將資料庫中的存儲過程移動到另一資料庫中
一種做法是:將原資料庫備份,將備份恢復到新資料庫中,將新資料庫中的數據表格清空。這樣存儲過程就保留下來了
另一種是把原資料庫中的存儲過程導出,在新資料庫中新建
㈢ sql server 怎麼備份存儲過程
轉:
利用T-SQL語句,實現資料庫的備份與還原的功能
體現了SQL Server中的四個知識點:
1. 獲取SQL Server伺服器上的默認目錄
2. 備份SQL語句的使用
3. 恢復SQL語句的使用,同時考慮了強制恢復時關閉其他用戶進程的處理
4. 作業創建SQL語句的使用
/*1.--得到資料庫的文件目錄
@dbname 指定要取得目錄的資料庫名
如果指定的數據不存在,返回安裝SQL時設置的默認數據目錄
如果指定NULL,則返回默認的SQL備份目錄名
*/
/*--調用示例
select 資料庫文件目錄=dbo.f_getdbpath('tempdb')
,[默認SQL SERVER數據目錄]=dbo.f_getdbpath('')
,[默認SQL SERVER備份目錄]=dbo.f_getdbpath(null)
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getdbpath]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_getdbpath]
GO
create function f_getdbpath(@dbname sysname)
returns nvarchar(260)
as
begin
declare @re nvarchar(260)
if @dbname is null or db_id(@dbname) is null
select @re=rtrim(reverse(filename)) from master..sysdatabases where name='master'
else
select @re=rtrim(reverse(filename)) from master..sysdatabases where name=@dbname
if @dbname is null
set @re=reverse(substring(@re,charindex('\',@re)+5,260))+'BACKUP'
else
set @re=reverse(substring(@re,charindex('\',@re),260))
return(@re)
end
go
/*2.--備份資料庫
*/
/*--調用示例
--備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_db.bak'
--差異備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'
--備份當前資料庫日誌
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_backupdb]
GO
create proc p_backupdb
@dbname sysname='', --要備份的資料庫名稱,不指定則備份當前資料庫
@bkpath nvarchar(260)='', --備份文件的存放目錄,不指定則使用SQL默認的備份目錄
@bkfname nvarchar(260)='', --備份文件名,文件名中可以用\DBNAME\代表資料庫名,\DATE\代表日期,\TIME\代表時間
@bktype nvarchar(10)='DB', --備份類型:'DB'備份資料庫,'DF' 差異備份,'LOG' 日誌備份
@appendfile bit=1 --追加/覆蓋備份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
,'\DATE\',convert(varchar,getdate(),112))
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
+' to disk='''+@bkpath+@bkfname
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go
/*3.--恢復資料庫
*/
/*--調用示例
--完整恢復資料庫
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db'
--差異備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_df.bak',@dbname='db',@retype='DF'
--日誌備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_log.bak',@dbname='db',@retype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_RestoreDb]
GO
create proc p_RestoreDb
@bkfile nvarchar(1000), --定義要恢復的備份文件名
@dbname sysname='', --定義恢復後的資料庫名,默認為備份的文件名
@dbpath nvarchar(260)='', --恢復後的資料庫存放目錄,不指定則為SQL的默認數據目錄
@retype nvarchar(10)='DB', --恢復類型:'DB'完事恢復資料庫,'DBNOR' 為差異恢復,日誌恢復進行完整恢復,'DF' 差異備份的恢復,'LOG' 日誌恢復
@filenumber int=1, --恢復的文件號
@overexist bit=1, --是否覆蓋已經存在的資料庫,僅@retype為
@killuser bit=1 --是否關閉用戶使用進程,僅@overexist=1時有效
as
declare @sql varchar(8000)
--得到恢復後的資料庫名
if isnull(@dbname,'')=''
select @sql=reverse(@bkfile)
,@sql=case when charindex('.',@sql)=0 then @sql
else substring(@sql,charindex('.',@sql)+1,1000) end
,@sql=case when charindex('\',@sql)=0 then @sql
else left(@sql,charindex('\',@sql)-1) end
,@dbname=reverse(@sql)
--得到恢復後的資料庫存放目錄
if isnull(@dbpath,'')='' set @dbpath=dbo.f_getdbpath('')
--生成資料庫恢復語句
set @sql='restore '+case @retype when 'LOG' then 'log ' else 'database ' end+@dbname
+' from disk='''+@bkfile+''''
+' with file='+cast(@filenumber as varchar)
+case when @overexist=1 and @retype in('DB','DBNOR') then ',replace' else '' end
+case @retype when 'DBNOR' then ',NORECOVERY' else ',RECOVERY' end
print @sql
--添加移動邏輯文件的處理
if @retype='DB' or @retype='DBNOR'
begin
--從備份文件中獲取邏輯文件名
declare @lfn nvarchar(128),@tp char(1),@i int
--創建臨時表,保存獲取的信息
create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))
--從備份文件中獲取信息
insert into #tb exec('restore filelistonly from disk='''+@bkfile+'''')
declare #f cursor for select ln,tp from #tb
open #f
fetch next from #f into @lfn,@tp
set @i=0
while @@fetch_status=0
begin
select @sql=@sql+',move '''+@lfn+''' to '''+@dbpath+@dbname+cast(@i as varchar)
+case @tp when 'D' then '.mdf''' else '.ldf''' end
,@i=@i+1
fetch next from #f into @lfn,@tp
end
close #f
deallocate #f
end
--關閉用戶進程處理
if @overexist=1 and @killuser=1
begin
declare @spid varchar(20)
declare #spid cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
open #spid
fetch next from #spid into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #spid into @spid
end
close #spid
deallocate #spid
end
--恢復資料庫
exec(@sql)
go
/*4.--創建作業
*/
/*--調用示例
--每月執行的作業
exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'
--每周執行的作業
exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'
--每日執行的作業
exec p_createjob @jobname='a',@sql='select * from syscolumns'
--每日執行的作業,每天隔4小時重復的作業
exec p_createjob @jobname='b',@sql='select * from syscolumns',@fsinterval=4
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createjob]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_createjob]
GO
create proc p_createjob
@jobname varchar(100), --作業名稱
@sql varchar(8000), --要執行的命令
@dbname sysname='', --默認為當前的資料庫名
@freqtype varchar(6)='day', --時間周期,month 月,week 周,day 日
@fsinterval int=1, --相對於每日的重復次數
@time int=170000 --開始執行時間,對於重復執行的作業,將從0點到23:59分
as
if isnull(@dbname,'')='' set @dbname=db_name()
--創建作業
exec msdb..sp_add_job @job_name=@jobname
--創建作業步驟
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '數據處理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數
@retry_interval = 5 --重試間隔
--創建調度
declare @ftype int,@fstype int,@ffactor int
select @ftype=case @freqtype when 'day' then 4
when 'week' then 8
when 'month' then 16 end
,@fstype=case @fsinterval when 1 then 0 else 8 end
if @fsinterval<>1 set @time=0
set @ffactor=case @freqtype when 'day' then 0 else 1 end
EXEC msdb..sp_add_jobschele @job_name=@jobname,
@name = '時間安排',
@freq_type=@ftype , --每天,8 每周,16 每月
@freq_interval=1, --重復執行次數
@freq_subday_type=@fstype, --是否重復執行
@freq_subday_interval=@fsinterval, --重復周期
@freq_recurrence_factor=@ffactor,
@active_start_time=@time --下午17:00:00分執行
go
/*--應用案例--備份方案:
完整備份(每個星期天一次)+差異備份(每天備份一次)+日誌備份(每2小時備份一次)
調用上面的存儲過程來實現
--*/
declare @sql varchar(8000)
--完整備份(每個星期天一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'''
exec p_createjob @jobname='每周備份',@sql,@freqtype='week'
--差異備份(每天備份一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'',@bktype='DF''
exec p_createjob @jobname='每天差異備份',@sql,@freqtype='day'
--日誌備份(每2小時備份一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'',@bktype='LOG''
exec p_createjob @jobname='每2小時日誌備份',@sql,@freqtype='day',@fsinterval=2
/*--應用案例2
生產數據核心庫:PRODUCE
備份方案如下:
1.設置三個作業,分別對PRODUCE庫進行每日備份,每周備份,每月備份
2.新建三個新庫,分別命名為:每日備份,每周備份,每月備份
3.建立三個作業,分別把三個備份庫還原到以上的三個新庫。
目的:當用戶在proce庫中有任何的數據丟失時,均可以從上面的三個備份庫中導入相應的TABLE數據。
--*/
declare @sql varchar(8000)
--1.建立每月備份和生成月備份資料庫的作業,每月每1天下午16:40分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_m.bak''
set @path=dbo.f_getdbpath(null)+@fname
--備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname
--根據備份生成每月新庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_月''
--為周資料庫恢復准備基礎資料庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_周'',@retype=''DBNOR''
--為日資料庫恢復准備基礎資料庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_日'',@retype=''DBNOR''
'
exec p_createjob @jobname='每月備份',@sql,@freqtype='month',@time=164000
--2.建立每周差異備份和生成周備份資料庫的作業,每周日下午17:00分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_w.bak''
set @path=dbo.f_getdbpath(null)+@fname
--差異備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname,@bktype=''DF''
--差異恢復周資料庫
exec p_backupdb @bkfile=@path,@dbname=''PRODUCE_周'',@retype=''DF''
'
exec p_createjob @jobname='每周差異備份',@sql,@freqtype='week',@time=170000
--3.建立每日日誌備份和生成日備份資料庫的作業,每周日下午17:15分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_l.bak''
set @path=dbo.f_getdbpath(null)+@fname
--日誌備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname,@bktype=''LOG''
--日誌恢復日資料庫
exec p_backupdb @bkfile=@path,@dbname=''PRODUCE_日'',@retype=''LOG''
'
exec p_createjob @jobname='每周差異備份',@sql,@freqtype='day',@time=171500
㈣ mysql資料庫不停庫的情況下怎麼備份並且做異地恢復
MySQL 支持的免費備份工具有:mysqlmp、mysqlhot1、mysqlmp 1.1 備份 mysqlmp 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。
現在來講一下 mysqlmp 的一些主要參數:--compatible=name 它告訴 mysqlmp,導出的數據將和哪種資料庫或哪個舊版本的 MySQL 伺服器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它並不保證能完全兼容,而是盡量兼容。--complete-insert,-c 導出的數據採用包含欄位名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到 max_allowed_packet 參數的影響而導致插入失敗。因此,需要謹慎使用該參數,至少我不推薦。--default-character-set=charset 指定導出數據時採用何種字元集,如果數據表不是採用默認的 latin1 字元集的話,那麼導出時必須指定該選項,否則再次導入數據後將產生亂碼問題。--disable-keys 告訴 mysqlmp 在 INSERT 語句的開頭和結尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據後才重建索引的。該選項只適合 MyISAM 表。--extended-insert = true|false 默認情況下,mysqlmp 開啟 --complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。--hex-blob 使用十六進制格式導出二進制字元串欄位。如果有二進制數據就必須使用本選項。影響到的欄位類型有 BINARY、VARBINARY、BLOB。--lock-all-tables,-x 在開始導出之前,提交請求鎖定所有資料庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,並且自動關閉 --single-transaction 和 --lock-tables 選項。--lock-tables 它和 --lock-all-tables 類似,不過是鎖定當前導出的數據表,而不是一下子鎖定全部庫下的表。本選項只適用於 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 選項。--no-create-info,-t 只導出數據,而不添加 CREATE TABLE 語句。--no-data,-d 不導出任何數據,只導出資料庫表結構。--opt 這只是一個快捷選項,等同於同時添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 選項。本選項能讓 mysqlmp 很快的導出數據,並且導出的數據能很快導回。該選項默認開啟,但可以用 --skip-opt 禁用。注意,如果運行 mysqlmp 沒有指定 --quick 或 --opt 選項,則會將整個結果集放在內存中。如果導出大資料庫的話可能會出現問題。--quick,-q 該選項在導出大表時很有用,它強制 mysqlmp 從伺服器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中。--routines,-R 導出存儲過程以及自定義函數。--single-transaction 該選項在導出數據之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時資料庫的一致性狀態。它只適用於事務表,例如 InnoDB 和 BDB。
本選項和 --lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。
要想導出大表的話,應結合使用 --quick 選項。--triggers 同時導出觸發器。該選項默認啟用,用 --skip-triggers 禁用它。其他參數詳情請參考手冊,我通常使用以下 SQL 來備份 MyISAM 表:/usr/local/mysql/bin/mysqlmp -uyejr -pyejr \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob -x db_name > db_name.sql 使用以下 SQL 來備份 Innodb 表:/usr/local/mysql/bin/mysqlmp -uyejr -pyejr \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob --single-transaction db_name > db_name.sql 另外,如果想要實現在線備份,還可以使用 --master-data 參數來實現,如下:/usr/local/mysql/bin/mysqlmp -uyejr -pyejr \--default-character-set=utf8 --opt --master-data=1 \--single-transaction --flush-logs db_name > db_name.sql 它只是在一開始的瞬間請求鎖表,然後就刷新binlog了,而後在導出的文件中加入CHANGE MASTER 語句來指定當前備份的binlog位置,如果要把這個文件恢復到slave里去,就可以採用這種方法來做。1.2 還原 用 mysqlmp 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。直接用 mysql 客戶端 例如:/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql 用 SOURCE 語法 其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:SOURCE /tmp/db_name.sql; 這里需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有許可權讀取的文件。2、 mysqlhot 2.1 備份 mysqlhot 是一個 PERL 程序,最初由Tim Bunce編寫。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 來快速備份資料庫。它是備份資料庫或單個表的最快的途徑,但它只能運行在資料庫文件(包括數據表定義文件、數據文件、索引文件)所在的機器上。mysqlhot 只能用於備份 MyISAM,並且只能運行在 類Unix 和 NetWare 系統上。mysqlhot 支持一次性拷貝多個資料庫,同時還支持正則表達。以下是幾個例子:root#/usr/local/mysql/bin/mysqlhot -h=localhost -u=yejr -p=yejr \db_name /tmp (把資料庫目錄 db_name 拷貝到 /tmp 下)root#/usr/local/mysql/bin/mysqlhot -h=localhost -u=yejr -p=yejr \db_name_1 ... db_name_n /tmproot#/usr/local/mysql/bin/mysqlhot -h=localhost -u=yejr -p=yejr \db_name./regex/ /tmp 更詳細的使用方法請查看手冊,或者調用下面的命令來查看 mysqlhot 的幫助:perldoc /usr/local/mysql/bin/mysqlhot 注意,想要使用 mysqlhot,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 許可權,並且還必須要能夠有讀取 datadir/db_name 目錄的許可權。2.2 還原 mysqlhot 備份出來的是整個資料庫目錄,使用時可以直接拷貝到 mysqld 指定的 datadir (在這里是 /usr/local/mysql/data/)目錄下即可,同時要注意許可權的問題,如下例:root#cp -rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)
㈤ sql2000資料庫異地備份
SQL2000資料庫的異地備份2008-06-10 14:48DECLARE @CurDate datetime
DECLARE @BkTime nvarchar(20)
DECLARE @DelTime nvarchar(8)
DECLARE @DBName varchar(30)
Declare @BkFolder nvarchar(100)
Declare @BkLogFile Varchar(200)
Declare @DelFile Varchar(200)
Declare @BkFile Varchar(200)
--設置需要備份的資料庫
SET @DBName='database'
--設定存放備份文件的文件夾
SET @BkFolder='\\20.1.250.83\share'
--取得備份時間
SET @CurDate=getdate()
SET @BkTime=convert(nvarchar(8),@CurDate,112)+'.'+Convert(nvarchar(2),DatePart(hh,@CurDate)) + '.' +
Convert(nvarchar(2),DatePart(mi,@CurDate))+ '.' +
Convert(nvarchar(2),DatePart(ss,@CurDate))
--取得需要刪除的備份文件的時間
SET @DelTime=convert(nvarchar(8),getdate()-3,112)
--生成刪除備份文件語句
SET @DelFile ='Del "' + @BkFolder + '\' + @DBName +@DelTime +'*'
--生成資料庫備份文件名
SET @BkFile=@BkFolder + '\'+@DBName + @BkTime + '.BAK'
--執行刪除備份文件
Exec Master.dbo.Xp_CmdShell @DelFile
--備份資料庫
BackUp Database @DBName To Disk=@BkFile
注意事項:
如果遇到通過網上鄰居訪問一切正常。在企業管理器里對資料庫進行備份,備份文件名寫入網路路徑'\\20.1.250.83\share';系統卻提示「無法驗證該備份文件位置是否存在。是否要使用該備份文件位置?」點擊確認後,系統提示「無法打開備份設備,設備出現錯誤或設備離線....」時,因該注意:SQL Server並不以Windows登錄帳戶訪問網路共享,而是以SQL Server服務的啟動帳戶來訪問。這時應該進入「管理工具-->服務-->MSSQLSERVER-->登錄」將啟動服務的本地系統帳戶修改為本機管理員,重新啟動服務後,問題解決。
還應該注意:同樣的「本地系統」帳戶,在2000與2003里的許可權卻不盡相同,2000及以前的系統中的本地系統帳戶只具備本地最高許可權,而2003及以後的系統中,該賬戶在具備本機完全訪問許可權的同時,可以像其他域帳戶一樣訪問網路資源。所以在2003中,卻不用修改SQL服務的登錄帳戶就能順利備份。
㈥ 運用哪幾種方法可以解決存儲過程的數據安全問題
在這個信息爆炸的年代,現代人每天不論於公於私, 都面臨必須經手大量數字信息、 而在數據安全問題上會出現各種麻煩;另一方面, 隨著數據量的增加,人們對存儲認識程度也日益加深, 特別是企業對於存儲過程中數據安全問題尤為關注。一個穩定、 安全、可靠的存儲基礎架構對企業來說是必不可少的。 企業的信息系統不可避免地受到來自外界的安全危脅, 包括自然災害、網路、硬體、軟體等方面,也包括人員的操作失誤。 數據存儲的任何失誤都可能給企業帶來巨大的經濟損失。 隨著數據價值不斷提升,以及存儲網路化不斷發展, 數據遭受的安全威脅日益增多,若無存儲安全防範措施, 一旦攻擊者成功滲透到數據存儲系統中, 其負面影響將是無法估計的。這要求企業在特定存儲系統結構下, 從存儲安全性綜合考慮。 而企業在業務運作的過程中最常面臨的存儲安全問題, 主要是由自然災害,網路、硬體,人員的操作失誤這幾方面引起的。 自然災害導致數據存儲安全 首先,這個不是一個人為的行為, 大量的數據存儲在企業的伺服器存儲系統中, 業務在運營中由於停電或是數據傳輸過程中的線路突然短路導致的數 據的丟失情況,對於企業是一個不小的損失,在這種狀態下, 由於自然災害原因導致企業數據的丟失可以說對於一個企業的數據信 息是一個很大的安全威脅,系統的正常運行,資料庫的合理優化, 操作人員的完善的操作程序都確保數據的穩定安全,而突發的停電、 火災以及後備電源的不到位對於中小企業是時常面臨的問題, 同時數據的存儲安全成為面對該情況時必須要解決的問題, 也是企業及時需要應對的措施,保證數據的安全, 但如何面對該情況應對企業數據的存儲安全呢? 網路硬體 其次, 企業數據的硬體環境方面的問題也會導致存儲過程中數據安全, 眾所周知信息化快速發展的今天,硬體的更新換代速度之快, 從而使得企業的傳統的存儲環境已經難以應對如今海量的數據需求, 企業也要升級換代才可以適應現在數據存儲的環境要求。 硬體環境的老化導致傳輸速率的降低, 同時網路的優化也需要良好的硬體環境作為基礎, 在傳輸數據的過程中如果數據量過於龐大, 而企業的硬體環境沒有改善那麼網路的延遲導致系統的崩潰, 從而丟失數據會造成巨大的經濟損失,而對於這些方面, 就需要企業根據業務發展的需要有針對性地升級存儲伺服器的配置, 提高網路的良性環境,保證存儲過程數據安全。 人員的操作失誤 「金無足赤,人無完人」 是對於當今任何企業在數據管理人員方面的一句良言, 每個人在工作的過程中不可避免的犯錯誤或者在操作上失誤, 特別是對於從事資料庫管理工作的人員,數據量之大, 系統運行之繁瑣,都會給工作中帶來不必要的失誤, 從而對於企業的數據上的安全和完整性存在危脅, 同時中小企業的數據管理人員還肩負存儲系統的運維工作, 這就對其數據存儲過程中的安全性提出了更高的要求, 面對著企業存儲過程數據安全問題,應該如何的解決, 採取什麼樣的措施保證數據的安全是擺在每個企業面前的主要問題, 數據是企業運營的核心, 強大的數據的支持保障企業在市場中能夠乘風破浪, 如何解決存儲過程數據安全問題, 下面針對以上的問題給以簡單的建議。 一般而言,解決存儲過程中的數據安全問題, 企業有很多可以採用的方案: 異地備份可以避免發生自然災害時的數據損失;採用RAID( 獨立磁碟冗餘陣列)可以減少磁碟部件的損壞;採用鏡像技術 可以減少存儲設備損壞;快照可以迅速恢復遭破壞的數據, 減少宕機損失。 而這些技術採用可以很好的應對企業面臨的自然災害,網路、硬體, 人員的操作失誤這幾方面引起的數據的安全問題。 異地備份 異地備份是保護數據的最安全的方式,無論發生什麼情況自然災害, 那怕是火災、地震,當其他保護數據的手段都不起作用時, 異地容災的優勢就體現出來了,異地備份問題在於速度和成本, 這要求擁有足夠帶寬的網路連接和優秀的數據復制管理軟體。 通常狀態下主要三方面實現異地備份,一是基於磁碟陣列, 通過軟體的復制模塊,實現磁碟陣列之間的數據復制, 這種方式適用於在復制的兩端具有相同的磁碟陣列。 二是基於主機方式,這種方式與磁碟陣列無關。 三是基於存儲管理平台,它與主機和磁碟陣列均無關。 RAID RAID系統使用許多小容量磁碟驅動器來存儲大量數據, 並且使可靠性和冗餘度得到增強。對計算機來說, 這樣一種陣列就如同由多個磁碟驅動器構成的一個邏輯單元。 所有的RAID系統共同的特點是「熱交換」能力: 用戶可以取出一個存在缺陷的驅動器,並插入一個新的予以更換。 對大多數類型的RAID來說,不必中斷伺服器或系統, 就可以自動重建某個出現故障的磁碟上的數據。 鏡像 這個技術是針對如果故障發生在異地分公司,可以使用鏡像技術, 進行不同卷的鏡像或異地卷的遠程鏡像, 或採用雙機容錯技術自動接管單點故障機, 保證無單點故障和本地設備遇到不可恢復的硬體毀壞時, 仍可以啟動異地與此相同環境和內容的鏡像設備, 以保證服務不間斷。當然,這樣做必然會提升對設備的投資力度。 快照 在數據保護技術中,快照技術(snapshot) 是極為基礎和熱門的技術之一,應用在很多存儲過程中, 比如數據復制和備份都在使用這種技術。 IBM的FlashCopy、IBM NAS的PSM軟體以及VERITAS的FlashSnap軟體 都是快照技術的代表。快照可以迅速恢復遭破壞的數據, 減少宕機損失, 可以針對與資料庫管理人員在操作中的失誤進行數據恢復。 綜述: 對於企業在存儲過程中的數據安全問題,還有很多解決的方案, 存儲安全固然十分重要, 但是存儲安全只是數據中心整個安全解決方案的一個組成部分。 安全是一個內涵很廣泛的話題, 存儲在業務流程中扮演的並非是主角,但確實是關鍵角色, 因為存儲包含了公司絕大部分記錄,如果沒有存儲, 很多業務流程將沒法繼續。因此, 對於面對存儲過程數據安全問題每個企業應該注視起來, 投入更多的精力,數據是一個企業的核心競爭力, 安全強大的數據是企業騰飛的保證,存儲技術的發展, 硬體環境的完善相信會給企業數據安全無疑提供強有力的支持。
㈦ 如何寫存儲過程把一個表的數據備份到另外一個表
可以通過以下sql實現
sql:insert into tablename1(filename3,filename4) as select filename1, filename2 from tablename2;
解釋:從tablename2表中讀取出filename1和filename2欄位插入到tablename1表中的
filename3和filename4欄位中。
備註:插入表的欄位順序和查詢表的欄位順序必須保持一致。
㈧ 如何用mysql的存儲過程來備份資料庫
個人認為,既然有資料庫,就要有DBA,DBA不但是一種職位,還是一種態度。備份資料庫就應該是DBA的事情,而想使用存儲過程來備份資料庫是不現實的,作為某個時間點的鏡像倒是還可以。
因為資料庫崩潰了,如果數據丟失,存儲過程再怎麼做也沒辦法恢復。
另外,存儲過程不是拿來做備份的,而是提供可靠和高效率計算的。
建議:使用批處理腳本,創建定時任務,調用 mysqlmp.exe 程序來做備份。