㈠ 寫出Oracle 11g和sql Server 2008 ent中備份資料庫的ddl語句
ORACLE獲取DDL的幾種常用方法
轉自CSDN (原作 brucelau)
一、通過toad、plsql develop等第三方工具進行導出DLL操作,用這種辦法的好處在於操作簡單方便,但需要安裝,下面簡單介紹一下用這兩個工具獲得DLL語句的操作。
1、Toad 工具 (可以到www.quest.com網站上下載)
a、啟動toad,連接目標資料庫
b、點擊DBA->Generate Schema Script,通過操作界面,選擇相應的Schema,當然可以通過其他的幾個tab頁面選擇相應的條件,點擊Execute按鈕。
2、plsql develop 工具
a、啟動plsql develop,連接目標資料庫
b、點擊Tools->Export Tables,選擇相應的內容,然後點擊Export按鈕,其實這些工具也是調用Oracle的Exp工具而已,如果你沒有指定文件目錄,文件會出現在plsql develop軟體的安裝目錄下。
二、通過EXP/IMP工具
Oracle提供的最原始最實用的導入導出工具,我們大體上可以分為三種辦法實現導出DDL。
1、通過imp指定indexfile參數,但這種辦法不爽在於有每行前會有REM
exp userid=... tables=emp rows=n file=emp.dmp
imp userid=... file=emp.dmp indexfile=emp.sql
2、 通過imp指定show=y,同時指定log參數,格式上也不是很好
exp userid=... tables=emp rows=n file= emp.dmp
imp userid=... file= emp.dmp show=y log=emp.sql
3、利用unix下有strings命令(這種方法比較野蠻):
exp userid=... tables=tab1 rows=n file=tab1.dmp
strings emp.dmp >emp.sql
emp.sql中就有DLL語句了
三、通過9i的DBMS_METADATA包得到DLL語句
基本上用到的語法如下:
set echo off
set feedback off
set heading off
set verify off
set newpage none
set linesize 999
set pagesize 0
set term off
set trims off
set trimspool on
set trimout off
set timing off
set long 90000 REM 必需
1、獲取單個的建表和建索引的語法
spool DEPT.sql
select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from al;
select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from al;
spool off;
2、獲取一個SCHEMA下的所有建表和建索引的語法,以scott為例:
spool scott_schema.sql
SELECT DBMS_METADATA.GET_DDL('TABLE',table_name) FROM USER_TABLES;
SELECT DBMS_METADATA.GET_DDL('INDEX',index_name) FROM USER_INDEXES;
spool off;
3、獲取某個SCHEMA的建全部存儲過程的語法
spool proceres.sql
select DBMS_METADATA.GET_DDL('PROCEDURE',object_name) from user_objects where object_type = 'PROCEDURE' AND status='VALID';
spool off;
4、獲取某個SCHEMA的建全部視圖/的語法
spool proceres.sql
select DBMS_METADATA.GET_DDL('VIEW',object_name) from user_objects
where object_type = 'VIEW' AND status='VALID';
spool off;
注:PACKAGE 也同樣適用,格式不是很好;
㈡ 如何處理sql server 2008 R2 Error 9003
方法1: 第一步: backup log database_name with no_log 或者 backup log database_name with truncate_only --no_log和truncate_only是在這里是同義的,隨便執行哪一句都可以 第二步: 1.收縮特定資料庫的所有數據和日誌文件,執行 dbcc shrinkdatabase (database_name,[,target_percent])--database_name是要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比 2.收縮一次一個特定資料庫中的數據或日誌文件,執行 dbcc shrinkfile(file_id,[,target_size]) --file_id是要收縮的文件的標識 (ID) 號,若要獲得文件 ID,請使用 FILE_ID 函數或在當前資料庫中搜索 sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc shrinkfile 將文件大小減少到默認文件大小 兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思看幫助。 方法2 (這個方法在sqlserver2000的環境下做一般能成功,在sqlserver7及以下版本就不一定了): 第一步: 先備份整個資料庫以備不測 第二步: 備份結束後,在Query Analyzer中執行如下的語句: exec sp_detach_db yourDBName,true --卸除這個DB在MSSQL中的注冊信息 第三步: 到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄 第四步: 在Query Analyzer中執行如下的語句: exec sp_attach_single_file_db yourDBName,'d:\mssql7\data\yourDBName_data.mdf' --以單文件的方式注冊該DB,如果成功則MSSQL將自動為這個DB生成一個500K的日誌文件。 以上方法在清除log日誌中均有效。 但,能否讓sql server 不產生log日誌呢?以上方法好像均無效。 我這兒正好有個case: 我客戶的sql server每天都會產生4,500M的log日誌,每天都清除一下,非常不便。有沒有辦法實現不產生log日誌呢? 我分析了一下客戶產生log日誌的原因,並且做了相應測試。 客戶是每天將資料庫清空,從總系統中將數據導入到sql server里。我感決sqlserver在插入時產生log不大,在delete整個庫時產生log極大。 比如: SELECT * into test_2 from b_bgxx 共45000條記錄,產生十幾M log,如果 delete from test_2 產生80多M log ,這明顯存在問題。 雖然可以換成: truncate table test_2 但我還是希望能找到不產生log的方法。就如oracle不產生歸檔一樣。
㈢ SQL SERVER 資料庫如何歸檔
SQL SERVER到2008還沒有提供歸檔模式;
它的日誌是寫到.ldf文件中,如果不加干預的話,這個文件會不停擴大。
㈣ sql server 2008這個錯誤怎麼解決
一.233錯誤
1.
打開「microsoft
sql
server
2008--配置工具--sql
server
配置管理器」
2.
"sql
server
2008
網路配置"--"mssqlserver的協議"--啟用"tcp/ip"和"named
pipes".在啟動tcp/ip協議後,還要把其屬性中的tcp埠號改為1433(動態埠)或修改為自己想要的埠號.
3.
重啟"sql
server"
昨天在安裝完microsoft
sql
server
2008
後,發現從microsoft
sql
server
management
studio
連接到伺服器時,如果在伺服器名稱處填寫的不是機器名,而是ip地址時,連接總是提示失敗,出現如下圖所示的提示:
解決方法:打開『程序』-『所有程序』-『microsoft
sql
server
2008』-『配置工具』-『sql
server
配置管理器』,在彈出的窗體中,找到『sql
server
2008
網路配置』,把『mssqlserver的協議』下的「named
pipes」和「tcp/ip」啟動,然後重新啟動microsoft
sql
server
2008就可以了
其它錯誤代碼參考
㈤ SQL Server 2008怎麼自動備份資料庫
sqlserver2008的資料庫自動備份方法
在SQL Server中出於數據安全的考慮,所以需要定期的備份資料庫。而備份資料庫一般又是在凌晨時間基本沒有資料庫操作的時候進行,所以我們不可能要求管理員每天守到晚上1點去備份資料庫。要實現資料庫的定時自動備份,最常用的方式就是使用SQL Server代理中的作業。啟動SQL Server Agent服務,然後在其中新建作業,作業中添加1個備份步驟,類型是T-SQL腳本,然後在命令中輸入如下SQL語句,該語句實現了對資料庫 TestDB1的完整備份,備份文件在C盤Backup文件夾中,文件名就是TestDB1+當時備份的日期字元串.bak。
declare @name varchar(250)
set @name='C:\Backup\TestDB1_'+convert(varchar(50),getdate(),112)+'.bak'
BACKUP DATABASE [TestDB1] TO
DISK = @name
WITH NOFORMAT, NOINIT,
NAME = N'TestDB1-完整 資料庫 備份',
SKIP, NOREWIND, NOUNLOAD
資料庫備份文件名稱中不能出現空格「 」,冒號「:」
創建好步驟以後,接下來就是創建計劃,創建計劃的操作十分簡單,界面上說明的很詳細了,我就不多說了。另外還可以配置警報和通知,不過一般很少用這個。
(1)在SSMS的對象資源管理器中右擊「維護計劃」,選擇 「維護計劃向導」,系統將彈出向導窗口
(2)點擊「下一步」按鈕,進入選擇計劃屬性窗口,輸入計劃的名稱,由於我們的計劃包括2部分:完整備份和差異備份,這2部分的執行計劃是不一樣的,一個是一周執行一次,另一個是一天執行一次,所以要選擇「每項任務單獨計劃」,
(3)單擊「下一步」按鈕,選擇維護任務,這里就是可以在維護計劃中執行的任務,如果你想執行的任務在這里沒有,那就還是不用維護計劃來做,自己寫 SSIS包或者SQL語句吧。我們要執行的任務都在這里,選中這2個任務
(4)單擊「下一步」進入選擇維護任務順序的界面,這里我們可以看到選中的任務出現在列表中,但是我們並不能調整其順序,那是因為在步驟2中我們選擇的是每項任務單獨計劃,所以這2個任務是獨立的,沒有先後順序可言。如果當時選擇的是另一個選項,那麼這里就可以調整順序了
(5)選中「備份資料庫(完整)」然後單擊「下一步」按鈕,系統將轉到定義完整備份任務的界面
(6)單擊「下一步」按鈕,進入差異備份任務的設置界面,和上一步的界面是一樣的,操作也是一樣的,計劃這里我們可以選擇除了周日以外的每天進行差異備份
(7)單擊「下一步」按鈕,進入選擇報告選項,這里我們可以將這個維護計劃的執行報告寫入文本文件中,也可以講報告通過電子郵件發送給管理員。如果要發送郵件的話,那麼需要配置SQL Server的資料庫郵件,另外還要設置SQL Server代理中的操作員,
㈥ SQL 資料庫如何查看歸檔日誌
在對象資源管理器中,展開「管理」,展開「SQL Server 日誌」,再雙擊「當前 <日期/時間>」,此時將顯示 SQL Server、「SQL 代理」和 Windows NT 日誌。
查看與作業相關的日誌
在對象資源管理器中,展開「SQL Server 代理」,右鍵單擊「作業」,再單擊「查看歷史記錄」,此時將顯示「作業歷史記錄」和「SQL 代理」日誌。
查看與維護計劃相關的日誌
在對象資源管理器中,展開「管理」,右鍵單擊「維護計劃」,再單擊「查看歷史記錄」,此時將顯示「維護計劃」、「作業歷史記錄」和「SQL 代理」日誌。
㈦ 怎麼把sql server 2008 備份文件bak還原
1、打開SQL Server Management Studio,連接資料庫,找到「本地」 - 「資料庫」。