當前位置:首頁 » 數據倉庫 » 資料庫處理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫處理

發布時間: 2022-01-12 09:44:32

『壹』 求助sql資料庫數據處理

update T1 set ID = convert(varchar(30),time0,112)+replace(convert(varchar(30),time0,8),':','')

『貳』 資料庫置疑了怎麼處理

解決由於sql2000日誌文件引起的「置疑」。
日誌有錯誤--------重新附加提示日誌有錯誤。
日誌文件丟失-----丟失了.ldf文件,只有.mdf文件的資料庫重建。

步驟:
一、備份「置疑」資料庫的數據文件,因為日誌文件.ldf出錯,可以只備份.mdf文件。

二、打開企業管理器(SQL Server Enterprise Manager),刪除「置疑」資料庫,如果提示刪除錯誤,可以重啟資料庫伺服器,然後再試。

三、在企業管理器中,新建同名資料庫(假如資料庫為test),注意建立的資料庫名稱,還有數據文件名要保持和原資料庫一致。

四、停止資料庫伺服器。

五、將剛才新建資料庫生成的資料庫的日誌文件test_log.ldf刪除,用要恢復的資料庫.mdf文件覆蓋剛才生成的資料庫數據文件test_data.mdf。

六、啟動資料庫伺服器。此時會看到資料庫test的狀態為「置疑」。這時候不能對此資料庫進行任何操作。

七、設置資料庫允許直接操作系統表。此操作可以在企業管理器(SQL Server Enterprise Manager)裡面選擇資料庫伺服器,按右鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

八、設置test為緊急修復模式 。
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此時可以在企業管理器(SQL Server Enterprise Manager)裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表。

九、下面執行真正的恢復操作,用dbcc rebuild_log命令來重建資料庫日誌文件(重建路徑根據你實際的資料庫路徑來)。
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')

執行過程中,如果遇到下列提示信息:
伺服器: 消息 5030,級別 16,狀態 1,行 1
未能排它地鎖定資料庫以執行該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。

說明您的其他程序正在使用該資料庫,如果剛才您在八步驟中使用企業管理器打開了test庫的系統表,那麼退出企業管理器就可以了。
正確執行完成的提示應該類似於:
警告: 資料庫 'test' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在企業管理器裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。

十、驗證資料庫一致性。(次步驟可省略)
dbcc checkdb('test')
一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'test'中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。

十一、設置資料庫為正常狀態
sp_dboption 'test','dbo use only','false'
如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。

十二、最後一步,我們要將步驟七中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在企業管理器裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
對於只有.mdf文件的sql2000資料庫恢復,從第三步開始做就行了。

最好的方法為先分離然後附加看下

1.我們SQL SERVER企業管理器新建立一個供恢復使用的同名資料庫(注意:要跟問題資料庫同名,本例中為myDb)。
2.停掉資料庫伺服器。
3.將剛才生成的資料庫的日誌文件myDb_log.ldf刪除(本例中的示列資料庫名,實際使用您自己的資料庫名稱),用剛才備份的資料庫mdf文件覆蓋新生成的資料庫數據文件myDb_data.mdf。
4.啟動資料庫伺服器。此時會看到資料庫myDb的狀態為「置疑」。這時候不能對此資料庫進行任何操作。
5.設置資料庫允許直接操作系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右--鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go F.設置myDb為緊急修復模式
在查詢管理器里設置如下命令:

update sysdatabases set status=-32768 where dbid=DB_ID('stib')此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表
6.下面執行真正的恢復操作,重建資料庫日誌文件
dbcc rebuild_log('stib','E:\zz\stib_log.ldf')警告: 資料庫 'myDb' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。
7.驗證資料庫一致性(可省略)
dbcc checkdb('stib')一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'myDb' 中)。

DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。

sp_dboption 'stib','single user','true'--設置為單用戶

dbcc checkdb('stib','REPAIR_ALLOW_DATA_LOSS')--這個語句可能執行幾遍之後有效

sp_dboption 'stib','single user','false'--取消單用戶
8.設置資料庫為正常狀態
sp_dboption 'stib','dbo use only','false'

9.最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates',0
go
reconfigure with override
go

到此資料庫置疑問題解決。

『叄』 資料庫表太多 怎麼處理

在objects中分別選擇<current_user>和my objects
tools-preferences-object browser-default user selection
中選擇 <current_user>

『肆』 資料庫中的數據處理方式

時時處理就是類似於觸發器,只要有一點變動就觸發一個事件,然後處理這個事物。
批處理就是。。。定時或定量一批一起處理。
分布處理就是不在一台伺服器上,由許多客戶端進行處理,然後最後結果上傳到伺服器。

『伍』 資料庫過大該怎麼處理

問題分析:這種問題是由於伺服器的資料庫文件或者日誌太大造成的,那麼我們清理下日誌或者收縮數據
庫就可以了。解決方法:一
第一種解決方案,不限制資料庫文件大小,當然,這是在您的伺服器空間足夠的情況下

第二種解決方案,直接清理資料庫日誌文件
我們打開資料庫,然後選擇分離資料庫,找到日誌文件並刪除,然後附加,會自動產生
一個初始的很小的日誌文件

第三種收縮資料庫日誌文件,設置資料庫文件或者日誌文件收縮到一定大小就可以。
以上各種解決方案,可以根據不同情況選擇不同方案,為防止對資料庫操作不熟悉,操
作失誤,修改前請先備份好資料庫。

『陸』 如何把Excel表格當做資料庫處理

一、 建立資料庫
方法一:使用向導,調出方法⑴可採用「文件」菜單「新建」
⑵或採用「工具」菜單「向導」
方法二:使用資料庫設計器
1、 使用向導建立資料庫
特點:可以方便快捷地創建資料庫,但只適用於一般常用的資料庫。
2、 使用資料庫設計器建立資料庫
特點: 最大特點就是靈活性
操作步驟:⑴「文件」菜單「新建」,顯示新建對話框
⑵選擇「資料庫」和單擊「新建文件」鈕
⑶在創建對話框中輸入新資料庫的名稱和單擊「保存」鈕
效果:資料庫文件已經建立完成。
顯示出「資料庫設計器」窗口和「資料庫設計工具」
打開「資料庫設計器」工具方法:「顯示」菜單「工具欄」
選擇「資料庫設計器」
三、建立表
1、 資料庫與數據表
可以先建立自由表,然後再添加到資料庫中
建立新的資料庫表,系統會將其自動加入到資料庫中。
2、 建立自由表
注意:自由表獨立於任何資料庫,如需要課添加到資料庫中,但不能同時
將一個表添加到多個資料庫。
預備知識:建立表必須首先建立表的結構
即要描述各個欄位的欄位名、欄位類型、欄位寬度、如果是數
值型還有小數位數,以及索引、是否再欄位中允許空值(選擇NULL)

3、 建立資料庫表
有三種方法:
法一、「文件」菜單「新建」,顯示新建對話框
選擇「表」和單擊「新建文件」鈕
在創建對話框中輸入新數表名稱和單擊「保存」鈕
法二、再建立完資料庫後,不關閉「資料庫設計器」窗口,單擊滑鼠右鍵後
選擇快捷菜單種的「新表」,單擊「新表」鈕,再創建對話框輸入表 名
後「保存」
法三、使用資料庫設計器工具欄
(「顯示」菜單「工具欄」)
選擇「資料庫設計器」工具欄種的第一個鈕「新建表」

二、使用命令建立資料庫、資料庫表
1、 建立資料庫
CREATE DATABASE 資料庫名稱
2、 建立資料庫表
CREATE TABLE │DBF 表名 [FREE]
(欄位名1 欄位類型 [(欄位寬度 [,小數位數] )]
[(欄位名2……]

二、使用向導建立查詢
1、查詢形式分類:查詢向導:標准查詢
交叉表向導:以電子表格形式輸出查詢結果
圖形向導:以電子圖形形式輸出查詢結果
2、使用查詢向導建立查詢步驟:
[0]使用查詢向導前必須先打開用到的庫表或自由表
⑴欄位選取
⑵記錄篩選
⑶選擇排序方式
⑷查詢完成(選擇保存並運行)(瀏覽查詢)
⑸打開查詢設計器,修改查詢
求採納為滿意回答。

『柒』 傳統資料庫處理方式和大數據處理方式的區別

文件系統把數據組織成相互獨立的數據文件,實現了記錄內的結構性,但整體無結構;而資料庫系統實現整體數據的結構化,這是資料庫的主要特徵之一,也是資料庫系統與文件系統的本質區別。
在文件系統中,數據冗餘度大,浪費存儲空間,容易造成數據的不一致;資料庫系統中,數據是面向整個系統,數據可以被多個用戶、多個應用共享使用,減少了數據冗餘。
文件系統中的文件是為某一特定應用服務的,當要修改數據的邏輯結構時,必須修改應用程序,修改文件結構的定義,數據和程序之間缺乏獨立性;資料庫系統中,通過DBMS的兩級映象實現了數據的物理獨立性和邏輯獨立性,把數據的定義從程序中分離出去,減少了應用程序的維護和修改。
文件系統和資料庫系統均可以長期保存數據,由數據管理軟體管理數據,資料庫系統是在文件系統基礎上發展而來。

『捌』 資料庫處理

DbConnection是指代連接到你指定的資料庫中,DbCommand給你提供相應的操作!!
你據說的Sql Server是資料庫,但是在C#環境中要有東西連接才能跟你的Sql Server連接上,並進行操作!!

『玖』 如何處理資料庫的時間

oracle為例吧:
1.分鍾轉成不同格式的時間
資料庫里有個欄位 存的分鍾
① 現在想顯示成HH:MM格式 假設為514分鍾
SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from al
輸出結果:
08:34
②如果存的是秒 同理
SELECT to_char((to_date('00:00:00','HH24:MI:SS')+514/24/60/60),'HH24:MI:SS') from al
輸出結果:
00:08:34
至於顯示成其他的格式,也就不成問題了
2.時分相加
至於為什麼要寫這個,是因為Oracle里沒有兩個時間相加的處理,兩個to_date相減可以,相加就出錯了:
資料庫里有兩個欄位 存的都是HH:MM格式的時間
假設一個是本月上午缺勤時間合計: 08:30(8個半小時)
另外一個是本月下午缺勤時間合計: 00:30(半小時)
現在想要總缺勤時間,顯示成 HH:MM格式
做法有兩種
① 正常的邏輯運算(代碼或者PLSQL實現的應該比這個容易的多,僅限於SQL實現):
select LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0') || ':' || LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') from al
看起來很復雜,而實際上就是把小時相加,分鍾相加,之後把分鍾滿60的小時進位,取余的顯示:
取前兩位相加得小時:(是因為不確定數據儲存的格式是不是嚴格的HH:MM,而不能借正則分隔「:」)
(substr('08:30',1,2) + substr('00:30',1,2)
取後兩位相加得分鍾:
(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))
把分鍾滿60的小時進位得顯示用的小時: (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60
現在小時算完了,不足兩位左補零:
LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0')
把分鍾取余得顯示用的分鍾:
mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60)
現在分鍾算完了,不足兩位左補零: LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0')
最後連上「:」就變成上述的SQL,得到的時間用HH:MM顯示了
輸出結果:
09:00
②函數實現:
SELECT to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI') from al
同樣看起來很復雜
首先把HH:MM的換成數值:
to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))
輸出結果:.(其實是代表了一個時間,是以天為單位的)
現在*24*60 把數值換成分鍾:
(to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60
輸出結果:510
也就是把08:30 變成了510分
(to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60
輸出結果:30(時間是.)這兩個
也就是把00:30 變成了30分
然後把兩個分鍾相加:
((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)
輸出結果:540
剩下的就是顯示處理了,和1裡面的做法一致:
to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI')
輸出結果:
3. 不論是方法①還是方法②,這里都存在一個問題:如果時間相加之後超出23:59,系統就會報錯,目前我用的涉及不到這個 就沒寫出來,如果有用到的直接再轉成DD:HH:MM的格式就行了,也就是把小時數滿24的進位取顯示用的天
SELECT to_char(to_date('01 00:00','DD HH24:MI') +(((to_date('23:30','HH24:MI') - trunc(to_date('23:30','HH24:MI'))) *24*60 + (to_date('01:30','HH24:MI') - trunc(to_date('01:30','HH24:MI'))) *24*60)/24/60-1),'DD HH24:MI') from al
輸出結果:01 01:00(25小時)
oracle 時間相減
select to_char((TO_DATE('1970-01-01', 'yyyy-MM-dd') +
(to_date('10:10:10', 'HH24:mi:ss') -
to_date('12:10:10', 'HH24:mi:ss'))), 'HH24:mi:ss')
from al;
對當前日期增加50分種
SQL> select sysdate, sysdate+numtodsinterval(50,』minute』) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:39:12 2010-10-14 22:29:12
對當前日期增加45秒
SQL> select sysdate, sysdate+numtodsinterval(45,』second』) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:40:06 2010-10-14 21:40:51
對當前日期增加3天
SQL> select sysdate, sysdate+3 from al ;
SYSDATE SYSDATE+3
——————- ——————-
2010-10-14 21:40:46 2010-10-17 21:40:46
對當前日期增加4個月
SQL> select sysdate, add_months(sysdate,4) from al ;
SYSDATE ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:41:43 2011-02-14 21:41:43
對當前日期增加一個小時:
SQL> select sysdate, sysdate+numtodsinterval(1,』hour』) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:38:19 2010-10-14 22:38:19
對當前日期增加50分種

『拾』 為什麼資料庫規范化處理

通常情況下,可以從兩個方面來判斷資料庫是否設計的比較規范。一是看看是否擁有大量的窄表,二是寬表的數量是否足夠的少。若符合這兩個條件,則可以說明這個資料庫的規范化水平還是比較高的。當然這是兩個泛泛而談的指標。為了達到資料庫設計規范化的要求,一般來說,需要符合以下五個要求。
要求一:表中應該避免可為空的列。
雖然表中允許空列,但是,空欄位是一種比較特殊的數據類型。資料庫在處理的時候,需要進行特殊的處理。如此的話,就會增加資料庫處理記錄的復雜性。當表中有比較多的空欄位時,在同等條件下,資料庫處理的性能會降低許多。
所以,雖然在資料庫表設計的時候,允許表中具有空欄位,但是,我們應該盡量避免。若確實需要的話,我們可以通過一些折中的方式,來處理這些空欄位,讓其對資料庫性能的影響降低到最少。
一是通過設置默認值的形式,來避免空欄位的產生。如在一個人事管理系統中,有時候身份證號碼欄位可能允許為空。因為不是每個人都可以記住自己的身份證號碼。而在員工報到的時候,可能身份證沒有帶在身邊。所以,身份證號碼欄位往往不能及時提供。為此,身份證號碼欄位可以允許為空,以滿足這些特殊情況的需要。但是,在資料庫設計的時候,則可以做一些處理。如當用戶沒有輸入內容的時候,則把這個欄位的默認值設置為0或者為N/A。以避免空欄位的產生。
二是若一張表中,允許為空的列比較多,接近表全部列數的三分之一。而且,這些列在大部分情況下,都是可有可無的。若資料庫管理員遇到這種情況,筆者建議另外建立一張副表,以保存這些列。然後通過關鍵字把主表跟這張副表關聯起來。將數據存儲在兩個獨立的表中使得主表的設計更為簡單,同時也能夠滿足存儲空值信息的需要。
要求二:表不應該有重復的值或者列。
為了解決這個問題,有多種實現方式。但是,若設計不合理的話在,則會導致重復的值或者列。如我們也可以這么設計,把客戶信息、聯系人都放入同一張表中。為了解決多個聯系人的問題,可以設置第一聯系人、第一聯系人電話、第二聯系人、第二聯系人電話等等。若還有第三聯系人、第四聯系人等等,則往往還需要加入更多的欄位。
所以,在資料庫設計的時候要盡量避免這種重復的值或者列的產生。筆者建議,若資料庫管理員遇到這種情況,可以改變一下策略。如把客戶聯系人另外設置一張表。然後通過客戶ID把供應商信息表跟客戶聯系人信息表連接起來。也就是說,盡量將重復的值放置到一張獨立的表中進行管理。然後通過視圖或者其他手段把這些獨立的表聯系起來。
要求三:表中記錄應該有一個唯一的標識符。
在資料庫表設計的時候,資料庫管理員應該養成一個好習慣,用一個ID號來唯一的標識行記錄,而不要通過名字、編號等欄位來對紀錄進行區分。每個表都應該有一個ID列,任何兩個記錄都不可以共享同一個ID值。另外,這個ID值最好有資料庫來進行自動管理,而不要把這個任務給前台應用程序。否則的話,很容易產生ID值不統一的情況。
要求四:資料庫對象要有統一的前綴名。
一個比較復雜的應用系統,其對應的資料庫表往往以千計。若讓資料庫管理員看到對象名就了解這個資料庫對象所起的作用,恐怕會比較困難。而且在資料庫對象引用的時候,資料庫管理員也會為不能迅速找到所需要的資料庫對象而頭疼。
其次,表、視圖、函數等最好也有統一的前綴。如視圖可以用V為前綴,而函數則可以利用F為前綴。如此資料庫管理員無論是在日常管理還是對象引用的時候,都能夠在最短的時間內找到自己所需要的對象。
要求五:盡量只存儲單一實體類型的數據。
這里將的實體類型跟數據類型不是一回事,要注意區分。這里講的實體類型是指所需要描述對象的本身。筆者舉一個例子,估計大家就可以明白其中的內容了。如現在有一個圖書館里系統,有圖書基本信息、作者信息兩個實體對象。若用戶要把這兩個實體對象信息放在同一張表中也是可以的。如可以把表設計成圖書名字、圖書作者等等。可是如此設計的話,會給後續的維護帶來不少的麻煩。
遇到這種情況時,筆者建議可以把上面這張表分解成三種獨立的表,分別為圖書基本信息表、作者基本信息表、圖書與作者對應表等等。如此設計以後,以上遇到的所有問題就都引刃而解了。
以上五條是在資料庫設計時達到規范化水平的基本要求。除了這些另外還有很多細節方面的要求,如數據類型、存儲過程等等。而且,資料庫規范往往沒有技術方面的嚴格限制,主要依靠資料庫管理員日常工作經驗的累積。