Win10 64bit build 10586 印表機的一個預設啟動設定,預設印表機是最後一次使用的印表機
如下圖
這個設計對公司內 ERP 內的標籤機列印產生很大的影響,標籤列印是透過程式來選擇標籤機和紙張大小,因為預設印表機是最後一次使用的印表機,當使用者列印標籤後,要列印正常紙張(通常是 A4)時,應當從原本預設印表機進行輸出,但此時預設印表機已經變成標籤機,程式就會一直出現內容超過設定紙張的 Error,Orz。
星期二, 12月 29, 2015
星期六, 12月 19, 2015
星期五, 12月 18, 2015
[SQL] 擴充屬性
Turning 時,對 Index 進行修正,突然一個念頭是,該 Index 到底是甚麼時候建立、修改的,想要紀錄該時間點,才查到有擴充屬性(Extended Properties)可以使用
操作擴充屬性的三個功能,分別為 sp_addextendedproperty、sp_updateextendedproperty 和 sp_dropextendedproperty,在 MSDN 說明上,都會有 Level0、Level1 和 Level2 參數需要設定,以 sp_addextendedproperty 為例說明
在這篇文章 - Document Your SQL Server Databases with Extended Properties 內,有把三層 Level 的物件,利用圖表方式來表達,清楚明瞭,看完就知道 Level0、Level1 和 Level2 參數,要如何設定
操作擴充屬性的三個功能,分別為 sp_addextendedproperty、sp_updateextendedproperty 和 sp_dropextendedproperty,在 MSDN 說明上,都會有 Level0、Level1 和 Level2 參數需要設定,以 sp_addextendedproperty 為例說明
在這篇文章 - Document Your SQL Server Databases with Extended Properties 內,有把三層 Level 的物件,利用圖表方式來表達,清楚明瞭,看完就知道 Level0、Level1 和 Level2 參數,要如何設定
星期四, 12月 17, 2015
星期三, 12月 16, 2015
Microtek ArtixScan DI 2125c
測試 Microtek ArtixScan DI 2125c Win10 Driver 時,一直抓不到該 scanner,即使我上官網重新下載最新版本(Win7) Driver,也無法在 Win10 上驅動該 scanner,打電話訊問課服才發現,原來還有另外一個官網,Orz
在 Google 上輸入 Microtek 前兩個網址,都是 ww3 開頭
客服人員請我在 ww3 網頁上點選 Microtek logo 就可以進入最新官網,還很貼心地告知我,該 scanner 目前並沒有推出 Win10 Driver 用 Win7 的就可以,且安裝時 scanner 不要跟 PC 連接,安裝完成後重開機後,再連接 PC
兩個不同網址下載 Driver 分別為
在 Google 上打 Microtek 或全友,搜尋內容第一頁完全沒有 ww7 的影子,^^''
在 Google 上輸入 Microtek 前兩個網址,都是 ww3 開頭
客服人員請我在 ww3 網頁上點選 Microtek logo 就可以進入最新官網,還很貼心地告知我,該 scanner 目前並沒有推出 Win10 Driver 用 Win7 的就可以,且安裝時 scanner 不要跟 PC 連接,安裝完成後重開機後,再連接 PC
兩個不同網址下載 Driver 分別為
- ww3:swdi_3160_eu
- ww7:swdi_3670_eu
在 Google 上打 Microtek 或全友,搜尋內容第一頁完全沒有 ww7 的影子,^^''
星期二, 12月 15, 2015
星期二, 12月 08, 2015
[C#] 變更 MDI 父表單的背景顏色
根據這篇官方文章 如何變更 MDI 父表單中視覺化 C# 中的背景色彩 的練習筆記
把 IsMDIContainer 設為 True 之後,Form 會變成下圖
在 Form_Load 利用 C# Code 來變更 MDI 背景顏色
把 IsMDIContainer 設為 True 之後,Form 會變成下圖
在 Form_Load 利用 C# Code 來變更 MDI 背景顏色
namespace MDIBackGroundColor { public partial class MDIParent : Form { public MDIParent() { InitializeComponent(); } private void MDIParent_Load(object sender, EventArgs e) { foreach (Control ctl in this.Controls.OfType<MdiClient>()) { ctl.BackColor = Color.YellowGreen; } } } }執行後效果
星期四, 12月 03, 2015
[SQL] 權限設定
論壇問題:原 PO 對 db_datareader 和 db_datawriter 權限設定有疑慮,剛好拿來練習並驗證
建立 Login (LoginWrite) 和 User (UserWrite) 對 AdventureWorks2014 內的 Demo Table 進行不同權限設定的 SELECT、INSERT、UPDATE 和 DELETE,藉此觀察權限設定情況
建立 Login (LoginWrite) 和 User (UserWrite) 對 AdventureWorks2014 內的 Demo Table 進行不同權限設定的 SELECT、INSERT、UPDATE 和 DELETE,藉此觀察權限設定情況
USE [AdventureWorks2014]
GO
IF OBJECT_ID('Demo') IS NOT NULL
DROP TABLE Demo
-- 建立一個簡單 Table 來驗證,是否具備 Read 或 Write 權限
CREATE TABLE [dbo].[Demo](
[ID] [int] NULL
) ON [PRIMARY]
GO
IF EXISTS
(
SELECT 1
FROM sys.database_principals
WHERE Name = 'UserWrite'
)
DROP USER UserWrite
IF EXISTS
(
SELECT 1 FROM sys.sql_logins WHERE Name = 'LoginWrite'
)
DROP LOGIN LoginWrite
-- 建立 Login
CREATE LOGIN [LoginWrite]
WITH PASSWORD = N'P@ssw0rd',
DEFAULT_DATABASE = [AdventureWorks2014],
DEFAULT_LANGUAGE = [繁體中文],
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF
GO
-- 建立 User 並指定預設 Schema
CREATE USER [UserWrite] FOR LOGIN [LoginWrite] WITH DEFAULT_SCHEMA = [dbo]
GO
-- 把 UserWrite 加入 db_datareader 內
EXEC sys.sp_addrolemember 'db_datareader' , UserWrite
-- 確認目前的 Login 和 User:
-- SUSER_SNAME():WIN2012R2\Administrator
-- USER_NAME() :dbo
SELECT
SUSER_SNAME() , -- Instance Level
USER_NAME() -- DB Level
-- 切換 Login 來進行測試
EXECUTE AS LOGIN = 'LoginWrite'
-- 確認目前的 Login 和 User:
-- SUSER_SNAME():LoginWrite
-- USER_NAME() :UserWrite
SELECT
SUSER_SNAME() , -- Instance Level
USER_NAME() -- DB Level
-- 權限測試
-- 對 Demo Table 進行 Select、Insert、Update 和 Delete
SELECT * FROM [AdventureWorks2014].[dbo].[Demo]
INSERT INTO [AdventureWorks2014].[dbo].[Demo] (ID) VALUES(1)
DELETE FROM [AdventureWorks2014].[dbo].[Demo]
UPDATE [AdventureWorks2014].[dbo].[Demo] SET ID = 2
-- 測試訊息
--(0 個資料列受到影響)
--訊息 229,層級 14,狀態 5,行 65
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 INSERT 權限。
--訊息 229,層級 14,狀態 5,行 66
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 DELETE 權限。
--訊息 229,層級 14,狀態 5,行 67
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 UPDATE 權限。
-- 返回 WIN2012R2\Administrator Login,後續要對權限進行設定 LoginWrite 和 UserWrite 並沒有授給權限的權利
REVERT
-- 確認目前的 Login 和 User:
-- SUSER_SNAME():WIN2012R2\Administrator
-- USER_NAME() :dbo
SELECT
SUSER_SNAME() , -- Instance Level
USER_NAME() -- DB Level
-- 授給 UserWrite 對 Demo Table 進行 INSERT 的權限
GRANT SELECT , INSERT
ON AdventureWorks2014.dbo.Demo
TO [UserWrite]
-- 切換 Login
EXECUTE AS LOGIN = 'LoginWrite'
-- 權限測試
-- 對 Demo Table 進行 Select、Insert、Update 和 Delete
SELECT * FROM [AdventureWorks2014].[dbo].[Demo]
INSERT INTO [AdventureWorks2014].[dbo].[Demo] (ID) VALUES(1)
DELETE FROM [AdventureWorks2014].[dbo].[Demo]
UPDATE [AdventureWorks2014].[dbo].[Demo] SET ID = 2
-- 測試訊息
--(0 個資料列受到影響)
--(1 個資料列受到影響)
--訊息 229,層級 14,狀態 5,行 96
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 DELETE 權限。
--訊息 229,層級 14,狀態 5,行 97
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 UPDATE 權限。
-- 返回 WIN2012R2\Administrator Login,後續要對權限進行設定 LoginWrite 和 UserWrite 並沒有授給權限的權利
REVERT
-- 把 UserWrite 加入 db_denydatawriter 內
EXEC sys.sp_addrolemember 'db_denydatawriter' , UserWrite
-- 切換至 LoginWrite
EXECUTE AS LOGIN = 'LoginWrite'
-- 權限測試
-- 對 Demo Table 進行 Select、Insert、Update 和 Delete
SELECT * FROM [AdventureWorks2014].[dbo].[Demo]
INSERT INTO [AdventureWorks2014].[dbo].[Demo] (ID) VALUES(1)
DELETE FROM [AdventureWorks2014].[dbo].[Demo]
UPDATE [AdventureWorks2014].[dbo].[Demo] SET ID = 2
-- 測試訊息
--(0 個資料列受到影響)
--訊息 229,層級 14,狀態 5,行 117
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 INSERT 權限。
--訊息 229,層級 14,狀態 5,行 118
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 DELETE 權限。
--訊息 229,層級 14,狀態 5,行 119
--結構描述 'dbo',資料庫 'AdventureWorks2014',物件 'Demo' 沒有 UPDATE 權限。
星期三, 12月 02, 2015
[Win10] build 查詢
Win10 查詢 build 資訊
開啟後在系統內,就可以找到,功能表 => 說明 => 關於 Windows 選項
- 方法一:利用指令
- 方法二:檔案總管功能表
檔案總管 => 檢視 => 選項 => 檢視 Tag 內勾選 "一律顯示功能表"
開啟後在系統內,就可以找到,功能表 => 說明 => 關於 Windows 選項
- 結果:上述二種方法,都可以開啟 "關於 Windows" 並查詢 build 資訊
- 20170313 方法三:關於