2013年10月29日 星期二

MSSQL 縮小 log 檔至 1MB

參考引用來源
--
 -- 首先把数据库的恢复模式改为Simple
 ALTER DATABASE [数据库名] SET RECOVERY SIMPLE;
 GO

 -- 缩小log文件至1M,逻辑名称可以通过sp_helpfile拿到
 DBCC SHRINKFILE ([log文件逻辑名称], 1);
 GO

 -- 重置数据库的恢复模式
 ALTER DATABASE [数据库名] SET RECOVERY FULL;
 GO

財訊快報 -- 有即時股價查詢

財訊快報

2013年10月28日 星期一

Celsys RETAS Studio 日文動畫教學

RETAS STUDIO 使い方講座 | CLIP
RETAS STUDIO 中文教學影片
[2D軟體]【RETAS HD 教學】還在摸索?有人寫出教學啦! - 【動畫創作研究社】 - 創作革命†REVOLUTION
啥?動畫—【2D動畫軟體《Retas》1-10篇】

--
【心得】繪圖筆記‧輕鬆入門繪圖板

看了繪圖工具後,應該會想要一台繪圖板吧! 上面這篇也詳細介紹
採用的型號:Wacom Bamboo CTL-470

證券交易所,證券櫃檯買賣中心

TWSE 臺灣證券交易所
證券櫃檯買賣中心
--
一直以為是一起的,注意找時..竟然上市和上櫃是區分開來的
收藏記錄一下

本機Windows帳號密碼驗證登入

參考引用來源
---
Public Class Form1

    Public Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, _
   ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, ByRef phToken As IntPtr) As Boolean

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_OK.Click
        Dim UserID As String = TextBox_UserName.Text
        Dim UserPass As String = TextBox_Password.Text
        Dim bTemp As Boolean
        Dim MachineName As String

        MachineName = System.Environment.MachineName

        Const LOGON32_PROVIDER_DEFAULT As Integer = 0
        Const LOGON32_LOGON_INTERACTIVE As Integer = 2
        Dim tokenHandle As New IntPtr(0)
        tokenHandle = IntPtr.Zero

        bTemp = LogonUser(UserID, MachineName, UserPass, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, tokenHandle)

        If bTemp Then
            MsgBox("登入成功")
        Else
            MsgBox("登入失敗")
        End If
    End Sub 
End Class

特殊資料類型轉換函式

參考引用來源
--
'浮點數轉二進位  
Private Function DecimalToBinary(ByVal DecValue As Integer, Optional ByVal Num As Integer = 16) As String
      Dim sValue As String = Convert.ToString(DecValue, 2)
      Return String.Format("{0:x" & (Num - sValue.Length).ToString & "}", 0) & sValue
  End Function

  Public Function BinaryToInteger(ByVal sData As String) As Integer
      Dim I As Int16
      Dim bTemp As Integer

      bTemp = 0
      For I = sData.Length - 1 To 0 Step -1
          bTemp = bTemp + Val(sData.Substring(I, 1)) * 2 ^ (sData.Length - 1 - I)
      Next
      Return bTemp
  End Function

'Byte轉二進位
Public Function ByteToBinary(ByVal bData As Byte) As String
      Return Strings.Right("00000000" & BinaryRecursive(bData), 8)
  End Function

  Public Function BinaryRecursive(ByVal bData As Byte) As String
      If bData > 1 Then
          Return BinaryRecursive(bData >> 1) & IIf((bData And 1) = 1, "1", "0")
      Else
          Return "1"
      End If
  End Function

  '二進位轉Byte
  Public Function BinaryToByte(ByVal sData As String) As Byte
      Dim I As Int16
      Dim bTemp As Byte

      bTemp = 0
      For I = sData.Length - 1 To 0 Step -1
          bTemp = bTemp + Val(sData.Substring(I, 1)) * 2 ^ (sData.Length - 1 - I)
      Next
      Return bTemp 
  End Function

自動從網頁的原始碼取要的資料

參考引用
--
Option Strict On
Option Explicit On
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions

Public Class F_Main
    Dim dt As DataTable
    Dim dr As DataRow
    Dim ds As DataSet
  
    Private Sub initTable()
        dt = New DataTable
        Dim oCol1 As DataColumn = dt.Columns.Add("stkid", GetType(String))
        oCol1.AllowDBNull = True
        Dim oCol2 As DataColumn = dt.Columns.Add("fill", GetType(String))
        oCol2.AllowDBNull = True
        Dim oCol3 As DataColumn = dt.Columns.Add("price", GetType(String))
        oCol3.AllowDBNull = True
    End Sub

    Private Sub StkSelect(ByVal stk_id As String)
        dr = dt.NewRow
        Dim url As String = "http://tw.stock.yahoo.com/q/q?s=" + stk_id
        Dim StockValues As String = SketchWebPage(url)

        Dim index As Integer = 0
        Dim GetNowTimeHtml As String = ""
        Dim GetStockName As String = "href=""/q/bc?s=" + stk_id + """>"
        index = InStr(StockValues, GetStockName) + GetStockName.Length - 1
        dr(0) = StockValues.Substring(index, StockValues.IndexOf("", index) - index)

        Dim GetFillHtml As String = GetNowTimeHtml + ""
        index = InStr(StockValues, GetFillHtml) + GetFillHtml.Length - 1
        dr(1) = StockValues.Substring(index, StockValues.IndexOf("", index) - index)

        Dim GetPriceHtml As String = ""
        Dim up As String = ""
        Dim down As String = ""
        Dim zero As String = ""

        Select Case InStr(StockValues, GetPriceHtml + up)
            Case 0
                Select Case InStr(StockValues, GetPriceHtml + zero)
                    Case 0
                        Dim dowhtml As String = GetPriceHtml + down
                        index = InStr(StockValues, dowhtml) + dowhtml.Length - 1
                        dr(2) = StockValues.Substring(index, 5)
                    Case Else
                        Dim zerohtml As String = GetPriceHtml + zero
                        index = InStr(StockValues, zerohtml) + zerohtml.Length - 1
                        dr(2) = StockValues.Substring(index, 5)
                End Select
            Case Else
                Dim uphtml As String = GetPriceHtml + up
                index = InStr(StockValues, uphtml) + uphtml.Length - 1
                dr(2) = StockValues.Substring(index, 5)
        End Select
        dt.Rows.Add(dr)
    End Sub

    Private Function SketchWebPage(ByVal URL As String) As String
        Try
            Dim lobjRequest As HttpWebRequest
            Dim lobjResponse As HttpWebResponse
            Dim lobjEncode As Encoding
            Dim lobjStreamReader As StreamReader
            lobjRequest = CType(WebRequest.Create(URL), HttpWebRequest)
            lobjResponse = CType(lobjRequest.GetResponse(), HttpWebResponse)
            lobjEncode = System.Text.Encoding.GetEncoding("big5")
           '建立一個新的stream去做讀取
            lobjStreamReader = New StreamReader(lobjResponse.GetResponseStream, lobjEncode)
      
      Dim stmPage As String = lobjStreamReader.ReadToEnd()
            lobjResponse.Close()
            lobjStreamReader.Close()
            Return stmPage
        Catch ex As Exception
            Return "FAILED"
        End Try
    End Function

    Private Sub btnReload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReload.Click
        initTable()

        StkSelect("2891")
        StkSelect("1532")
        StkSelect("2524")
        StkSelect("2409")
        StkSelect("2704")
        StkSelect("5531")
        StkSelect("5347")
      
        Me.DataGridView1.DataSource = dt
        Me.DataGridView1.Columns(0).Width = 70
        Me.DataGridView1.Columns(1).Width = 60
        Me.DataGridView1.Columns(2).Width = 60
    End Sub 
End Class

簡單的使用類別中的類別下的屬性

參考引用來源
--
Public Class Factory

    Private sAddress As String
    Private sTEL As String
    Private objEmp As New Employees

    Public Property Address() As String
        Get
            Return sAddress
        End Get
        Set(ByVal value As String)
            sAddress = value
        End Set
    End Property

    Public Property TEL() As String
        Get
            Return sTEL
        End Get
        Set(ByVal value As String)
            sTEL = value
        End Set
    End Property

    Public Property Employees() As Employees
        Get
            Return objEmp
        End Get
        Set(ByVal value As Employees)
            objEmp = value
        End Set
    End Property 
End Class

Public Class Employees
    Private bWork As Boolean
    Private sName As String


    Public Property Work() As Boolean
        Get
            Return bWork
        End Get
        Set(ByVal value As Boolean)
            bWork = value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return sName
        End Get
        Set(ByVal value As String)
            sName = value
        End Set
    End Property
 
End Class

--
用法:
Dim ft As New Factory
 ft.Address = "地球村台灣區台中路112號"

 '簡短寫法
 With ft.Employees
     .Name = "Tom"
     .Work = False
 End With
 '或用一般寫法
 ft.Employees.Name = "Tom" 
 ft.Employees.Work = False

2013年10月27日 星期日

mysql 5 使用者網頁式中文手冊

請參考來源:mysql 5 | mysql 5 使用者手冊
--
真方便,都做成索引了! 值得收藏~~以備所需!

vbnet 抓網頁資料

引用來源
--
Imports System.Web
Imports System.Net.Sockets 'HttpWebRequest、HttpWebResponse類別
Imports System.Net
Imports System.IO 'StreamReader類別

在page_load事件裡加入以下



Dim request As HttpWebRequest = WebRequest.Create("http://tw.yahoo.com")
        Dim mResponse As HttpWebResponse = request.GetResponse()
        Dim sr As New StreamReader(mResponse.GetResponseStream, Encoding.GetEncoding("utf-8"))

        ' 可設定用什麼編碼來擷取


        Dim strContent = sr.ReadToEnd()
        sr.Close()
        request = Nothing
        mResponse = Nothing
        Response.Write(strContent)

2013年10月22日 星期二

NLog 股市分析

NLog 股市分析 - 台股股票百種數據、分析工具及排行榜提供 - 讓您成為股市大贏家

PL/SQL 常用轉換函數 (轉)


ABS(n) 取決對值 ABC(-5) = 5;
CEIL(n) 無條件進位 CEIL(5.9) = 6;
FLOOR(n) 無條件捨去小數 FLOOR(5.9) = 5;
MOD(m,n) 餘數 MOD(5,2) = 1;
POWER(m,n) n次方 POWER(2,3) = 23;
ROUND(m,n) 四捨五入 ROUND(2.54,1) = 2.5;
SIGN(n) n是否小於零 SIGN(-4) = -1;
SQRT(n) 平方根
TO_CHAR(n or date[,format]) TO_CHAR(sysdate,’YYYYMMDD’)
TO_NUMBER(char)
TO_DATE(char,format)
SELECT TO_DATE (’20050101′, ‘yyyy-mm-dd’) - 10
FROM DUAL
LPAD(char,m,str) 向左補字元
RPAD(char,m,str) 向右補字元
LTRIM(char, str) 向左去空白
RTRIM(char, str) 向右去空白
LOWER(char) 轉小寫
UPPER(char) 轉大寫
REPLACE(char, str1, str2) 替換字元
SUBSTR(char, m, n) 切字元
INSTR(m,n) 傳回n字串在m字串中的位置(切符號分隔字串)
ex:INSTR(’ABCD’,'CD’)=3
LENGTH(char) 字元長度
GREATEST(n1,n2) 取大值
LEAST(n1,n2) 取小值

時間日期:
SYSDATE [from DUAL]
LAST_DAY(date) date的最後一天 return date
ADD_MONTHS(date, n) date的n個月後 return date

Only use SQL
DECODE(char, str1, str2, str3, str4, str5)
SELECT columns
FROM tables
WHERE EXISTS ( subquery );
計算字元出現次數
   SELECT length(translate(’aabbaddddccaaa’, ‘a’||’aabbaddddccaaa’,'a’)) FROM dual

2013年10月16日 星期三

循環切換 Control focus

這就類似智慧型手機上的鍵盤輸入運用
想不到要搞定 focus 還真是花費好多時間
最終只好採用變數才能處理
--















--
當按[循環 focus] 即可在上面標示 1,2,3,1,2,3 如此切換 Control  focus
--
code:

 Public Class Form1
    Private focus_index As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Select Case focus_index
            Case 0
                Txt2.Focus()
            Case 1
                Button2.Focus()
            Case 2
                Txt1.Focus()
        End Select      
    End Sub

    Private Sub Txt1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Txt1.GotFocus
        focus_index = 0
    End Sub
    Private Sub Txt2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Txt2.GotFocus
        focus_index = 1
    End Sub
    Private Sub Button2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.GotFocus
        focus_index = 2
    End Sub
End Class

查詢MS SQL Server連線狀況

參考引用來源
--
use master--use master系統資料庫
select c.session_id, c.connect_time,s.login_time, c.client_net_address,
s.login_name,s.status
from sys.dm_exec_connections c left join sys.dm_exec_sessions s
on c.session_id = s.session_id

MS SQL 判斷資料表是否存在

參考引用來源
--
--方法一-透過INFORMATION_SCHEMA.TABLES
select *
from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE='BASE TABLE'
and TABLE_NAME='RubSpec'

--方法二-透過sys.tables
select *
from sys.tables
where name='RubSpec'

--方法三-使用OBJECT_ID
select OBJECT_ID('RubSpec')
----若為暫存表格,因存放於tempdb,語法改寫為
select OBJECT_ID('tempdb..RubSpec')

--如果表格存在要一併刪除,可使用下述語法
IF (select OBJECT_ID('RubSpec')) IS NOT NULL Drop Table RubSpec

mssql create primary key (建立PK)

參考引用來源:w3schools:SQL PRIMARY KEY Constraint
--

SQL PRIMARY KEY Constraint
The PRIMARY KEY constraint uniquely identifies each record in a database table.

Primary keys must contain unique values.

A primary key column cannot contain NULL values.

Each table should have a primary key, and each table can have only ONE primary key.

SQL PRIMARY KEY Constraint on CREATE TABLE
The following SQL creates a PRIMARY KEY on the "P_Id" column when the "Persons" table is created:

MySQL:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
To allow naming of a PRIMARY KEY constraint, and for defining a PRIMARY KEY constraint on multiple columns, use the following SQL syntax:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
Note: In the example above there is only ONE PRIMARY KEY (pk_PersonID). However, the value of the pk_PersonID is made up of two columns (P_Id and LastName).
SQL PRIMARY KEY Constraint on ALTER TABLE
To create a PRIMARY KEY constraint on the "P_Id" column when the table is already created, use the following SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
To allow naming of a PRIMARY KEY constraint, and for defining a PRIMARY KEY constraint on multiple columns, use the following SQL syntax:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
Note: If you use the ALTER TABLE statement to add a primary key, the primary key column(s) must already have been declared to not contain NULL values (when the table was first created).

To DROP a PRIMARY KEY Constraint
To drop a PRIMARY KEY constraint, use the following SQL:

MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

2013年10月11日 星期五

ms sql windows驗證登入,卻無法登入的問題





















--
這問題,查好久;才發現..原來是 OS 的登入帳號被改過了
導致使用 windows 驗證登入,老是登不進去
--
解決方法:
採用sa 登入後,建立目前 OS 登入的帳號 -- 加入後;即可在mssql 使用 windows 驗證登入

mssql 2000 master 壞了,無法啟動服務問題

當遇到 mssql 2000 master 系統資料庫壞掉
服務是無法啟動
---
解決方法:
拿光碟片內,將 master.mdf 和   mastlog.ldf 這2檔
複製 到C:\Program Files\Microsoft SQL Server\MSSQL\Data\ 即可
--

2013年10月8日 星期二

股市一路發 » 鵝爸爸李明哲股票分析網站

股市一路發 » 鵝爸爸李明哲股票分析網站

--
這要看全文,要付費! Orz..

sqlcmd錯誤的解決方法


sqlcmd錯誤的解決方法

一、問題
使用sqlcmd客戶端工具連接數據時,出現以下錯誤:
      C:\>sqlcmd
      HResult 0x2,級別 16,狀態 1
      命名管道提供程序: 無法打開與 SQL Server 的連接 [2].
      Sqlcmd: 錯誤: Microsoft SQL Native Client : 建立到服務器的連接
      允許遠程連接這個事實可能會導致失敗。。
      Sqlcmd: 錯誤: Microsoft SQL Native Client : 登錄超時已過期。

二、原因
1、網絡協議及相關端口未打開
2、未指明使用何種身份認證方式登錄

三、解決過程
1、開啟網絡協議
      SQL Server Configuration Manager -> 網絡配置 -> 協議
      TCP/IP屬性
      保持活動狀態 --> 30000
      全部偵聽     --> 否
      無延遲       --> 否
      已啟用       --> 是
     
       IP地址
      IP地址      --> 數據庫服務器IP
      TCP動態端口 --> 不填
      TCP端口     --> 1433
      活動        --> 是
      已啟用      --> 是

2、連接數據庫
      (1)使用Windows身份認證:C:\>sqlcmd -E -S\實例名 -d master
      (2)使用SQL SERVER身份認證:C:\>sqlcmd -S\實例名 -d master -U 用戶名 -P 密碼

四、使用SQLCMD
1、查看幫助:C:\>sqlcmd -?
2、執行SQL語句
      C:\>sqlcmd -E -S\WWDD -d master
      1> use www
      2> go
      已將數據庫上下文更改為 'WWW'。
      1> select * from guangd;
      2> go

2013年10月2日 星期三

貝蚤清除方法

引用來源
--
 相信很多人都知道貝蚤是幾乎所有魚都不吃...而且這種生物大多在蓮花盆裡面出現...
想撈也撈不完..魚也不吃....但是某種鼠魚似乎會幫你解決這個問題...就是Y字鼠和三間鼠其中一種
因為我本來想說我的蓮花盆缺鼠魚清底..所以我就跑去買了2隻Y字鼠和1隻三間鼠來清底
但沒想到過了2天之後 水底游來遊去的貝蚤幾乎消失不見(裡面至少1-2百隻貝蚤)
所以我猜想大概是Y字鼠(六間鼠???)幫我解決了這煩惱~而3間鼠呢 放進蓮花盆裡就不見蹤影
整個盆子翻過了就是找不到...連屍體也找不到...我想可能被外星人綁架了 [face9]
有興趣的大大可以買個一之來試試看
不過要小心Y字鼠偶爾會攻擊小魚..但不至於被吃掉或是受傷

--
看到這篇,也跑去買了2隻來試試
魚圖引用來源

MS SQL Log 修復


如果遺失日誌檔
小知識: SQL恢復技術
SQL Server 資料庫檔恢復技術
SQL Server 資料庫備份有兩種方式,一種是使用BACKUP DATABASE 將資料庫檔備份出去,另外一種就是直接拷貝資料庫檔 mdf 和日誌檔ldf的方式。下面將主要討論一下後者的備份與恢復。
本文假定您能熟練使用SQL Server Enterprise Manager (SQL Server企業管理器) 和 SQL Server Quwey Analyser(SQL Server查詢分析器)。

1、正常的備份、恢復方式
正常方式下,我們要備份一個資料庫,首先要先將該資料庫從運行的資料伺服器中斷開,或者停掉整個資料庫伺服器,然後複製檔。
卸下資料庫的命令:Sp_detach_db 資料庫名
連接資料庫的命令:Sp_attach_db
或者
sp_attach_single_file_db
sp_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]
sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′
使用此方法可以正確恢復 SQL Sever7.0 和 SQL Server 2000 的資料庫檔,要點是備份的時候一定要將 mdf 和 ldf 兩個檔都備份下來,mdf 檔是資料庫資料檔案,ldf 是資料庫日誌檔。
例子:
假設資料庫為test,其資料檔案為test_data.mdf,日誌檔為test_log.ldf。下面我們討論一下如何備份、恢復該資料庫。
卸下資料庫:
sp_detach_db ‘test’
連接資料庫:
sp_attach_db ‘test’, ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf’, ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf’
sp_attach_single_file_db ‘test’,'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf’
2、只有mdf檔的恢復技術
由於種種原因,我們如果當時僅僅備份了 mdf 檔,那麼恢復起來就是一件很麻煩的事情了。 如果您的 mdf 檔是當前資料庫產生的,那麼很僥倖,也許你使用 sp_attach_db 或者 sp_attach_single_file_db 可以恢復資料庫,但是會出現類似下面的提示資訊設備啟動錯誤。物理檔案名 ‘C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF’ 可能有誤。
已創建名為 ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF’ 的新日誌檔。
但是,如果您的資料庫檔是從其他電腦上複製過來的,那麼很不幸,也許上述辦法就行不通了。你也許會得到類似下面的錯誤資訊
伺服器: 消息 1813,級別 16,狀態 2,行 1
未能打開新資料庫 ‘test’。CREATE DATABASE 將終止。
設備啟動錯誤。物理檔案名 ‘d:\test_log.LDF’ 可能有誤。
怎麼辦呢?別著急,下面我們舉例說明恢復辦法。
A.我們使用默認方式建立一個供恢復使用的資料庫(如test)。可以在SQL Server Enterprise Manager裏面建立。
B.停掉資料庫伺服器。
C.將剛才生成的資料庫的日誌檔test_log.ldf刪除,用要恢復的資料庫mdf檔覆蓋剛才生成的資料庫資料檔案test_data.mdf。
D.啟動資料庫伺服器。此時會看到資料庫test的狀態為“置疑”。這時候不能對此資料庫進行任何操作。
E.設置資料庫允許直接作業系統表。此操作可以在SQL Server Enterprise
Manager裏面選擇資料庫伺服器,按右鍵,選擇“屬性”,在“伺服器設置”頁面中將“允許對系統目錄直接修改”一項選中。也可以使用如下語句來實現。
use master
go
sp_configure ‘allow updates’,1
go
reconfigure with override
go
F.設置test為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID(‘test’)
此時可以在SQL Server Enterprise
Manager裏面看到該資料庫處於“唯讀\置疑\脫機\緊急模式”可以看到資料庫裏面的表,但是僅僅有系統表
G.下面執行真正的恢復操作,重建資料庫日誌檔
dbcc rebuild_log(‘test’,'C:\Program Files\Microsoft SQL
Server\MSSQL\Data\test_log.ldf’)
執行過程中,如果遇到下列提示資訊:
伺服器: 消息 5030,級別 16,狀態 1,行 1
未能排它地鎖定資料庫以執行該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯繫。
說明您的其他程式正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise
Manager打開了test庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。
正確執行完成的提示應該類似於:
警告: 資料庫 ‘test’ 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB
以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌檔。
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯繫。
此時打開在SQL Server Enterprise Manager裏面會看到資料庫的狀態為“只供DBO使用”。此時可以訪問資料庫裏面的用戶表了。
H.驗證資料庫一致性(可省略)
dbcc checkdb(‘test’)
一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 ‘test’ 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯繫。
I.設置資料庫為正常狀態
sp_dboption ‘test’,'dbo use only’,'false’
如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。
J.最後一步,我們要將步驟E中設置的“允許對系統目錄直接修改”一項恢復。因為平時直接作業系統表是一件比較危險的事情。當然,我們可以在SQL Server
Enterprise Manager裏面恢復,也可以使用如下語句完成
sp_configure ‘allow updates’,0
go
reconfigure with override
go