Posts Tagged With: sql server

[T-SQL] SQL認證帳號新增資料庫未正常掛入使用者


工作的資料庫其中一個資料表超過 2 億 2 千萬筆,但這個資料表常常用在 JOIN 上,導致工作日查詢網頁時,大概要拖到 20 秒以上,假日沒人用倒還好,大概 3 秒可以出來。

某個資料表超過兩億筆
某個資料表超過兩億筆

這個資料表存了超過兩百個專案的資料,所以考慮採專案切割的方式,將每個專案資料切到不同資料庫,再由各專案資料庫的資料表進行 JOIN ,減少維度障礙。

超過兩百個專案進行切割,換句話說就是要建立超過兩百個資料庫,所以打算建立完整的 T-SQL 語法,方便後續使用。

正常建立的資料庫使用者如下,考慮到管理問題,預設加入 [BUILTIN\Administrators] ,再加入自行建立的 SQL 認證的 [馬賽克B] ,以下簡稱 UserB 。

資料庫的使用者
資料庫的使用者

開發的時候用測試機來測 T-SQL ,使用本機 Windows 認證,所使用的 T-SQL 語法簡化如下:

USE [master]
GO
/* 建立資料庫 */
GO
USE [專案資料庫]
GO
/****** User [BUILTIN\Administrators] ******/
CREATE USER [BUILTIN\Administrators] FOR LOGIN [BUILTIN\Administrators] WITH DEFAULT_SCHEMA=[dbo]
GO
/* BUILTIN\Administrators Set db_owner */
/*
EXEC sp_addrolemember 'db_owner','BUILTIN\Administrators' /* Before MSSQL 2008r2 */
*/
ALTER ROLE [db_owner] ADD MEMBER [BUILTIN\Administrators]
GO
/* --分隔線-- */
/****** User [*******B] ******/
CREATE USER [*******B] FOR LOGIN [*******B] WITH DEFAULT_SCHEMA=[dbo]
GO
/* [*******B] Set db_owner */
ALTER ROLE [db_owner] ADD MEMBER [*******B]
GO


正常建立完成的 UserB 點選 [屬性] 可看到 [使用者名稱]、[登入名稱] 都如同 UserB 的內容,左下角的輸出畫面可以看到沒有錯誤。

正常建立的 UserB 帳號
正常建立的 UserB 帳號

測試完沒問題後,從我的電腦跑,變成遠端存取建立資料庫,但這一建立就發生錯誤。

遠端建立無法正常加入使用者
遠端建立無法正常加入使用者

起初發現是 UserB 無法加入這個資料庫,但用手動也加入不了,經詳細比對後,發現是 SQL Server 自動掛入的 dbo 帳號會變成:

[使用者名稱]=dbo,但 [登入名稱] =UserB ,然後 [登入名稱] 又不給我改回 dbo ,所以無法加入 UserB,只好砍掉重練。

經過多次測試,發現上面的 T-SQL 語法從分隔線處分成兩次執行,第一次執行時,SQL Server 會正常掛入 dbo 帳號,第二次執行就可以正常掛入 UserB 帳號。

目前要得到我要的資料庫安全性登入帳號的測試結論是:

  1. 本機使用 Windows 認證時,上面 T-SQL 語法可以同次執行
  2. 遠端使用 SQL Server 認證時,上面的 T-SQL 語法需要從分隔線處分兩次執行

原因我還沒找到,做個心得記錄,後面可以翻查。

本機 Windows 認證我測試過 SQL Server 2008r2、2012、2014、2016、2017 都正常。

廣告
Categories: SQL, 工作點滴, 技術分享 | 標籤: | 發表留言

[SQL] SQL Server 2017 安裝體驗


十月初,接到財會要買一套報表系統,需要 ASP.NET + MS SQL,由於財會人數少,加上會計師也沒超過 10 個,每期報表約增加 2 MB 資料庫容量。
本來我是規劃用工業電腦 Windows Embedded Standard (W7E) + SQL Server 2014 Express 的,W7E 的 Web client 測過可以到 1000 條,MSSQL Express 可以到 10 GB,充分滿足需求,但是廠商沒試過 W7E + MSSQL Express,只有安裝在 Windows Server 上的經驗,所以最後從最小需求著手。

反正不是性能很大需求,所以我選了 ASUS RS300-E9-PS4 1U 機架伺服器。
https://www.asus.com/tw/Commercial-Servers-Workstations/RS300-E9-PS4/

IBM Server 被聯想買走,2015/12 人大要求 Server 一定要開後門,所以直接刷掉。
HP Server 上次打客服問一個說明書沒寫到的面板燈號意義,客服問兩句直接掛我電話,我惹不起 HP 難道躲不起?刷掉。
DELL Server 先前因為網站標錯價,直接結束台灣分公司來閃照價出貨,現在是代理商在進口,我實在很懷疑維護品質。刷掉。
最後也只剩華碩能選。

當然這個月要買的下一台 2U 那台會考慮 HP/DELL ,華碩也有華碩的好處,叫修快…
所以這台就用華碩的,不過討厭華碩 Server 硬碟抽取盒政策就是了。

由於使用人數少,就直接選擇 Windows Server 2012r2 Foundation ,這只要 7000 左右,限制 15 users ,不用買 CAL ,剛好可以給財會少少的人數使用。

SQL Server 則直接託經銷商買一個最新版 Standard 版掛到公司的大量授權帳號。

ASUS Server 附的是還原光碟,所以 RAID1 設定好後,直接倒入硬碟,就擺著等 SQL Server 到貨。

收到經銷商的註冊完畢通知信傻了一會,居然是 SQL Server 2017 ,我記得先前看到 MVP 跟 Microsoft 的資訊不是還是 RC2 嗎?搜尋了一下,原來 10 月上市,所以我們直接是最新版,上大量授權網站下載光碟開始安裝。

MSSQL 2017 光碟放入 Server 後,才想起來,ASP.NET 、.Net framework 等都還沒裝,就從伺服器管理員去新增元件跟角色,沒想到被踢掉,因為從光碟機讀不到 Windows 來源可以安裝,把光碟退出來反而就會從還原的快取路徑安裝,這華碩封裝的有問題啊…

元件、角色新增完後,一跑 MSSQL 安裝檢查,就被通知沒有 Windows Update ,不能安裝,只好開始跑安全性更新…

MSSQL 2017 Setup

MSSQL 2017 Setup

跑了一天終於開始安裝了,反正不是我要用,懶得細看項目,直接勾全選安裝,然後通知我得裝 Java Runtime Environment (JRE) …
http://www.oracle.com/technetwork/java/javase/downloads/index.html

依照連結去裝完最新版的 JRE 9.0.1.0 ,還是不能跑:

JRE 9.0.1.0 已安裝完成

JRE 9.0.1.0 已安裝完成

拜讀 google 大神:
Sql Server 2016 : Oracle JRE 7 Update 51 (64-bit) or higher is required for Polybase
https://sqltimes.wordpress.com/2017/04/08/sql-server-2016-oracle-jre-7-update-51-64-bit-or-higher-is-required-for-polybase/
這篇說裝了就能跑,沒用。

SQL Server (v2016) – Installation – Blocked – “Oracle JRE 7 Update 51 (64-bit) or higher is required for Polybase”
https://learningintheopen.org/2017/07/12/sql-server-v2016-installation-blocked-oracle-jre-7-update-51-64-bit-or-higher-is-required-for-polybase/
這篇有講到要裝 Server JRE ,但沒講清楚步驟,沒試成功。

SQL SERVER – 2016 FIX: Install – Rule “Oracle JRE 7 Update 51 (64-bit) or higher is required” failed
https://blog.sqlauthority.com/2015/07/08/sql-server-2016-fix-install-rule-oracle-jre-7-update-51-64-bit-or-higher-is-required-failed/
這篇把 polybase 查詢功能移除,可以安裝,想想反正不是我用,就先移除再說。

移除 Polybase 服務

移除 Polybase 服務

之後就很順利地裝到好,裝完要檢查時,才發現同事從大量授權網站抓下來的沒有 SSMS … 但是安裝光碟會自動導向微軟網站讓你抓最新的 SSMS 17.3:

下載 SQL Server Management Studio (SSMS)
https://docs.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms

安裝好 SSMS 後,要登入 MSSQLSERVER 個體檢查時,發現不能登入:

SSMS 預設捷徑不能登入

SSMS 預設捷徑不能登入

我很確定我安裝 SQL Server 時,是將 Administrators 群組加進去,考慮到 Win2012r2 是 Win8 以後的 OS 會強制降階 User ,重新點連結,選擇以系統管理員身分執行,就可以正常開啟了,從圖上可看到 BUILTIN\Administrators 是加進去的:

SSMS 以系統管理員身分才能登入

SSMS 以系統管理員身分才能登入

測試關閉 UAC 也是沒用,乾脆改捷徑預設使用 Administrators 開啟。

關閉 UAC 沒用

關閉 UAC 沒用

基本上算是結束了。

不過 Win2012r2 Foundation 這時又出一個包,跳出了這個訊息:

EULA 超過 15 users

EULA 超過 15 users

查了一下,原來是我裝 SQL Server 時,全選,裡面 R Scripts 自動註冊了 21 個 users … 只好砍到剩五個。

R scripts 增加了 21 users

R scripts 增加了 21 users

弄完就回報財會通知廠商接手了。

Categories: 電腦和網際網路, 工作點滴 | 標籤: | 1 則迴響

[OWC]新安裝電腦安裝 OWC 的來源與使用者介面授權


話說我在開發測試跟 OWC 相關的功能時,我很喜歡從網頁來處理,這樣我可以很方便的塞資料進去,也可以變更選項,讓我先確認我要的畫面後,再用程式來實現,在網頁上要操作時,我會用我慣用的網頁測:

http://www.tlcheng.tk/TLCheng/Basic/vbs/WebChart/client.htm

由於公司配發新 NB ,家裡電腦剛好硬碟壞掉,所以原先能順利開發測試的環境,都因為重灌而變更。

重灌的特色是,直接安裝 Office 2010 及 SQL Server 2012 。而 OWC 則是在跑網頁時自動安裝的版本:

這個版本有要求電腦要安裝 Office 2003 才能使用滑鼠右鍵叫出使用者互動介面,先前一路升級上來,有安裝 Office 2007 / 2010 ,但都能正常使用,所以一直以為是只要有安裝 Office 就可以有授權可呼叫使用者互動介面。

白天在公司要寫繪圖時,發現不能用,起先以為是 Office 2010 x64 可能是與 OWC 授權不相容,晚上回家測試,才發現不是這麼回事,搜尋後看了這篇 KB :

http://support.microsoft.com/kb/556040

裡面有寫到,Office 2007 以後不支援 OWC 了,所以 OWC 12 版以後的都是免授權就可以使用互動介面,比對 Office 2007、Office 2007 SP1、SQL Server 2008、SQL Server 2008 R2 的 OWC 日期後,決定來源選擇 SQL Server 2008 R2 ,這邊版本最齊全,有 x86 / x64 / IA64 三種 CPU 對應版本。

先安裝 OWC11.MSI,變成 12.0.0.4518 版:

再安裝 owc11sp1.msp,變成 12.0.0.6211 版:

最後安裝 owc11kb947318.msp ,變成 12.0.0.6502 版:

安裝完需要做 Office 2007 的安全性更新,看樣子 OWC 元件安全性更新仍然歸屬在 Office 2007 ,更新完後,OWC 版本並未變動,所以可能是共用元件在更新。

之後就能順利操作本篇一開始說的 OWC 使用者互動介面了。

Categories: 自用整理, Office, 工作點滴, 技術分享 | 標籤: | 11 則迴響

在WordPress.com寫網誌.

%d 位部落客按了讚: