1. 程式人生 > >【QT 資料庫專輯】【03】WIN7下搭建本地SQL SERVER資料庫

【QT 資料庫專輯】【03】WIN7下搭建本地SQL SERVER資料庫

前言:

經過試驗,差不多弄清楚了,幾種連線不上的原因了。大多數是配置,賬戶,密碼的問題,這裡主要是有一個先後的配置順序:

首先,

我們需要安裝哪些東西、配置哪些東西來搭建呢:大約有以下6個需要配置的東西:

1 SQL SERVER 2008 這個是我用的SQL SERVER的軟體:

無論哪個版本,基本有兩個SQL SERVER的基本工具:

2 一個是:SQL SERVER配置管理器、

一個是:SQL SERVER Management Studio

3 安裝的時候,需要配置SQL SERVER的賬戶為windows 賬戶和  SQL SERVER的賬戶都可以用:

那麼,最好是你先在windows 裡面設定幾個你需要分級的賬戶,因為安裝的時候,不同的sql server的服務最好用不同的賬戶和密碼

(這裡需要注意,資料庫開始的時候是沒有你設定的賬號的,你需要在安裝資料庫之後,通過預設的windows賬戶進去後,在資料庫裡面重新設定好你需要的賬戶才有效)

4 windows 的ODBC配置

5 SQL SERVER Management Studio 裡面資料庫的配置

6 SQL SERVER Management Studio 裡面帳號密碼設定

其次,配置的順序是什麼呢?

1 首先是安裝上述相關的軟體

2 第一個配置:SQL SERVER配置使用者的賬戶和密碼

是安裝SQL SERVER的時候,需要配置你的SQL SERVER 的使用者和密碼,這裡有一個選項是:是否要支援SQL SERVER的驗證,

預設是用windows 當前的賬戶和密碼來訪問,

注意,如果你的資料庫需要跨網路的話,必須選擇使用密碼的SQL Server驗證


選擇好之後,你一定會遇到第一個連線問題,就是連線SQL Server的時候,你想用一個自己的密碼訪問,但是設定後,SQL SERVER根本不搭理你,你會出現連線不上的錯誤,

在這裡的出錯原因是,你如果是第一次安裝SQL SERVER的時候,你的資料庫還沒有建立,預設的資料庫是沒有你的訪問使用者名稱和密碼的,怎麼辦?

由於你必須使能 SQL SERVER的驗證來使能網路之間資料庫的共享,那麼好,你可以選擇在安裝之前,先建立一個WINDOWS的賬戶和密碼,然後填入就可以了。

安裝好SQL SERVER之後

3 在SQL SERVER Management Studio 裡面資料庫的配置和賬戶密碼

你需要建立一個自己的資料庫,而不是用系統預設的。

那麼現在,你如果用之前你安裝SQL SERVER的賬戶和密碼去訪問SQL SERVER Management Studio,

你會遇到第二個無法訪問問題

這是因為,系統的SQL SERVER雖然跑起來了,但是,資料庫其實 沒有註冊你的使用者密碼,你當然可以在系統預設資料庫裡面設定你的賬戶,但是,我推薦,你還是建一個自己的資料庫然後自己去自由的擺弄吧。那麼你如何登陸呢,你需要用預設的windows 使用者和密碼進行訪問先,然後在進入資料庫 之後,右擊資料庫建立自己的資料庫,然後,在安全性選項裡面選擇增加一個和之前定義的賬戶密碼相同的賬戶。


4 你需要確認一下本地的賬戶密碼是否已經完備。

需要斷開當前的資料庫連線然後,用你在資料庫裡面設定的賬戶和密碼來連線一下。

如果沒有意外,上面的連線應該是可以的。

現在開始要對不同的網路的機器的連線

5 配置區域網,保證每臺機器可以ping通(略)

6 現在,你會遇到第三個連線問題

那就是各臺機器已經可以拼通了,本地賬戶密碼也已經可以了,怎麼就不能用SQL SERVER Management Studio來遠端登入資料庫呢?

這裡或許有其他的一些問題,你需要通過SQL SERVER配置管理器來保證你的配置正確。

首先,這裡有兩個地方的配置需要檢查

第一就是,資料庫的連線協議


你必須設定為TCP/IP的連線方式,

第二:

你必須檢查一下,你的登陸賬戶身份設定是不是用了外網的方式:


然後,你需要檢測一下,你的這個給其他機器的賬戶,別的計算機能訪問嗎? Ping通不表示可以訪問,有很多其他因素,比如

對方的防火牆,360的設定,或者,其他網路的限制,如何確認,其他機器賬戶是可以訪問的呢,那麼,我的試驗是,構建一個共享資料夾來確認一下,


如下,如果你連這個共享目錄都無法訪問, 那麼資料庫就更無法訪問了吧

對於共享目錄的訪問問題,主要是設定訪問許可權的問題,當然別忘了還有工作組或者域的設定必須一直才行。

7 似乎萬事俱備了,就欠東風了吧?

No!是不是想罵人啊 哈哈 請紳士一點,馬上就好

現在是你可能遇到的第4個連線不上的問題

原因是需要配置WINDWOS的ODBC資料來源管理器,把你的資料庫和資料庫的賬戶密碼告知給windows的網路服務系統。

下面的例子會說明如何配置ODBC來解決這個問題。

小結一下:

遠端連線SQL SERVER的資料庫需要安裝上述的步驟,逐個檢查配置資料庫源,這樣你的資料庫就可以在不同的機器內進行分享了。

如下:

這裡介紹一個順序的例項如何連線微軟的SQL SERVER

1 設定ODBC資料來源管理器

首先需要確認在ODBC的資料來源管理器裡面有你需要連線到資料集

然後我們開啟編輯的子選單

紅色是後面QT的資料庫連線時候需要用到的引數

然後你需要確定你的資料連線是正確的,如果有問題可以參照我之前的部落格文章。

一般是連線配置,使用者的密碼等設定問題,我這裡用了和winodws登入一樣的配置,所以,沒問題。

2 QT的設定

其實QT的設定,和之前MYSQL的設定是一樣的,不需要修改,所以,這裡我略去了。

請參閱之前的部落格文章。

3 設定本地 SQL Server Configuration Manager


在SQL Server裡面選擇你要啟動點Server ,右擊選擇啟動,則會啟動SQL Server


然後,你需要配置你的網路協議,這裡網路協議的配置有兩個頁面,第一個是總頁面叫做【協議】,配置說明如下:

啟用
可能的值為"是"和"否"。

保持活動狀態
指定傳輸保持活動狀態的資料包的時間間隔(毫秒),以檢查位於連線遠端的計算機是否仍可用。

全部偵聽
指定 SQL Server 是否偵聽所有繫結到計算機網絡卡的 IP 地址。 如果設定為"否",則使用每個 IP 地址各自的屬性對話方塊對各個 IP 地址進行配置。 如果設定為"是",則 IPAll 屬性框的設定將應用於所有 IP 地址。 預設值為"是"。 

無延遲
SQL Server 不會實施對此屬性的更改。

遇到的問題:

1 SQL SERVER無法連線的問題,

問題描述,在SSCM裡面,之前的資料庫連線突然不能使用了。開啟SSCM看到SQL SERVER的例項存在,網路的配置基本沒有改變,為何突然不能使用了呢?



1.1 檢查Windows的錯誤日誌


通過【控制面板】-》【管理工具】-》事件檢視器 可以開啟WINDOWS的錯誤事件來檢視SQL SERVER的錯誤訊息,

1.2 檢查SQL Server的日誌

SQL Server在windows的錯誤LOG的地址一般如下:

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log


這裡每次連線錯誤都會有LOG的記錄,我們來看一下一個具體的連線錯誤的記錄:

2018-01-22 09:36:07.39 Server      Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) 
	Mar 29 2009 10:11:52 
	Copyright (c) 1988-2008 Microsoft Corporation
	Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

2018-01-22 09:36:07.39 Server      (c) 2005 Microsoft Corporation.
2018-01-22 09:36:07.39 Server      All rights reserved.
2018-01-22 09:36:07.39 Server      Server process ID is 24252.
2018-01-22 09:36:07.39 Server      System Manufacturer: 'System manufacturer', System Model: 'System Product Name'.
2018-01-22 09:36:07.39 Server      Authentication mode is WINDOWS-ONLY.
2018-01-22 09:36:07.39 Server      Logging SQL Server messages in file 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log\ERRORLOG'.
2018-01-22 09:36:07.39 Server      This instance of SQL Server last reported using a process ID of 11360 at 2018/1/22 9:34:38 (local) 2018/1/22 1:34:38 (UTC). This is an informational message only; no user action is required.
2018-01-22 09:36:07.39 Server      Registry startup parameters: 
	 -d C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\master.mdf
	 -e C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log\ERRORLOG
	 -l C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\mastlog.ldf
2018-01-22 09:36:07.39 伺服器         SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.
2018-01-22 09:36:07.40 伺服器         Detected 4 CPUs. This is an informational message; no user action is required.
2018-01-22 09:36:07.41 伺服器         Using dynamic lock allocation.  Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.  This is an informational message only.  No user action is required.
2018-01-22 09:36:07.44 伺服器         Node configuration: node 0: CPU mask: 0x000000000000000f Active CPU mask: 0x000000000000000f. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2018-01-22 09:36:07.46 spid7s      Starting up database 'master'.
2018-01-22 09:36:07.50 spid7s      FILESTREAM: effective level = 0, configured level = 3, file system access share name = 'BIM-DEMO-SQL-SERVER'.
2018-01-22 09:36:07.51 spid7s      SQL Trace ID 1 was started by login "sa".
2018-01-22 09:36:07.52 spid7s      Starting up database 'mssqlsystemresource'.
2018-01-22 09:36:07.53 spid7s      The resource database build version is 10.00.2531. This is an informational message only. No user action is required.
2018-01-22 09:36:07.56 spid10s     Starting up database 'model'.
2018-01-22 09:36:07.56 spid7s      Server name is 'BIM-SERVER\SQLEXPRESS'. This is an informational message only. No user action is required.
2018-01-22 09:36:07.57 spid7s      資訊: 找不到支援全文的語言。
2018-01-22 09:36:07.57 spid7s      Starting up database 'msdb'.
2018-01-22 09:36:07.64 spid10s     Clearing tempdb database.
2018-01-22 09:36:07.73 伺服器         A self-generated certificate was successfully loaded for encryption.
2018-01-22 09:36:07.74 伺服器         錯誤: 26024,嚴重性: 16,狀態: 1。
2018-01-22 09:36:07.74 伺服器         Server failed to listen on fe80::e0:0:0:0%11 <ipv6> 1433. Error: 0x277a. To proceed, notify your system administrator.
2018-01-22 09:36:07.74 伺服器         錯誤: 17182,嚴重性: 16,狀態: 1。
2018-01-22 09:36:07.74 伺服器         TDSSNIClient initialization failed with error 0x277a, status code 0xa. Reason: 無法初始化 TCP/IP 偵聽器。 無法載入或初始化請求的服務提供程式。

2018-01-22 09:36:07.74 伺服器         錯誤: 17182,嚴重性: 16,狀態: 1。
2018-01-22 09:36:07.74 伺服器         TDSSNIClient initialization failed with error 0x277a, status code 0x1. Reason: 初始化失敗,出現基礎結構錯誤。請檢查以前的錯誤。 無法載入或初始化請求的服務提供程式。

2018-01-22 09:36:07.74 伺服器         錯誤: 17826,嚴重性: 18,狀態: 3。
2018-01-22 09:36:07.74 伺服器         Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
2018-01-22 09:36:07.74 伺服器         錯誤: 17120,嚴重性: 16,狀態: 1。
2018-01-22 09:36:07.74 伺服器         SQL Server could not spawn FRunCM thread. Check the SQL Server error log and the Windows event logs for information about possible related problems.
我們來看一下,第一秒 Server做了什麼,把
1 SQL Server的程序ID打印出來了,“This instance of SQL Server last reported using a process ID of 11360 ”
2 做好了各種配置選項
3 然後啟動了資料庫"database 'master'"
第一個錯誤:
2018-01-22 09:36:07.74 伺服器         錯誤: 26024,嚴重性: 16,狀態: 1。
2018-01-22 09:36:07.74 伺服器         Server failed to listen on fe80::e0:0:0:0%11 <ipv6> 1433. Error: 0x277a. To proceed, notify your system administrator.
是一個IPV6的監聽錯誤

franklin:

 從兩個錯誤的訊息看,都把這一題都把錯誤指向了網路的連線錯誤:

檢查的幾個手段:

1 檢查預設埠 1433


>netstat -ano|findstr "1433" 通過命令可以檢查1433的端口占用情況

2 防毒軟體防火牆都退出

3 重灌SQL Server

試驗證明重灌SQL SERVER是可以解決這個問題的。

4 網路配置協議裡面的VIA是不是開啟了,開啟了關閉

網路配置協議裡面的VIA是不是開啟了,開啟了關閉

問題的幾個很有益的參考網站:

1 https://www.cnblogs.com/gqrbkw/p/5632134.html

2 這時候可能會遇到無法連線的問題

http://www.mamicode.com/info-detail-847367.html

3 你所不知道的SQL Server資料庫啟動過程,以及啟動不起來的各種問題的分析及解決技巧

3.1  "SQL Server 不存在或訪問被拒絕" (不是我的問題)

3.2 檢查伺服器端的網路配置,檢查是否啟用了命名管道.是否啟用了TCP/IP 協議(我已經用了)

3.3 在客戶端檢查客戶端的網路配置  (沒找到)

https://www.cnblogs.com/zhijianliutang/p/4085546.html

4 SQL server開啟TCP/IP登入,並且啟用預設的1433埠 (不能解決我的問題)

https://www.2cto.com/database/201304/204867.html

5 sql server 請求失敗或服務未及時響應

http://blog.csdn.net/libins/article/details/56676531


歡迎討論:

QQ:28044280 

微信:NewTechLife