顯示包含「MS SQL」標籤的文章。顯示所有文章
顯示包含「MS SQL」標籤的文章。顯示所有文章

2012/12/26

SQL Server Table Schema 查詢與欄位定序



/*資料表*/
Select * From SysObjects Where xType='U' Order By Name

/*欄位*/
Select * From SysObjects A Inner Join SysColumns B On A.ID=B.ID Where A.xType='U' Order By A.Name,ColID

/*讀取SQL 資料表欄位結構的SQL 語法*/
Select A.Name As TableName,B.ColOrder As ColOrder,B.Name As ColName,C.Name As ColType,B.Length As ColLen,B.XPrec As ColPrecision,B.XScale As ColScale
From (SysObjects A Inner Join SysColumns B On A.ID=B.ID) Inner Join SysTypes C On B.XType=C.XType
Where A.XType='u'
Order By A.Name,B.ColOrder

/*修改欄位定序*/
ALTER TABLE MyTable ALTER COLUMN CharCol
varchar(10) COLLATE Chinese_Taiwan_Stroke

2008/09/11

MS SQL Server 2005 錯誤 15023

sql server中"登錄"與"用戶"的區別,"登錄"用於用戶身份驗證,而資料庫"用戶"帳戶用於資料庫訪問和許可權驗證。登錄通過安全識別符 (SID) 與用戶關聯。將資料庫恢復到其他伺服器時,資料庫中包含一組用戶和許可權,但可能沒有相應的登錄或者登錄所關聯的用戶可能不是相同的用戶。這種情況被稱為存在"獨立用戶"。 此時是不能通過新建登錄或者是對同名登錄授予對應資料庫的“用戶”許可權來解決登錄問題,因為SQL Server會報出"錯誤15023:當前資料庫中已存在用戶或角色",為了解決這個問題,需要調用系統存儲過程sp_change_users_login,具體用法如下:

Use Northwind
go
sp_change_users_login 'update_one', 'test', 'test'

其中
1.Northwind為存在獨立用戶的資料庫,
2.update_one是存儲過程的參數,表示只處理一個用戶,
3.第一個test是"用戶",
4.後一個test是"登錄",
以上這個SQL表示將伺服器登錄"test"與 Northwind 資料庫用戶"test"重新起來。這樣就可以正常使用資料庫了。

2008/08/18

MS SQL 定序議題 (可區分資料庫中大小寫等...)

排序順序選項

有數個排序順序選項可以套用到指定的 Analysis Services Windows 定序,包括依據大小寫、腔調字、假名和區分全半形等,以進一步定義排序和比較規則。下表描述 Windows 定序排序順序選項和 Analysis Services 之相關聯的後置詞。

排序順序 (後置詞) 排序順序描述
二進位 (_BIN)1 依據每一個字元已定義的位元模式來排序和比較 Analysis Services 中的資料。二進位排序順序為區分大小寫和區分腔調字。二進位也是最快的排序順序。如需詳細資訊,請參閱<使用 BIN 和 BIN2 定序的指導方針>。
如果沒有選取此選項,Analysis Services 會遵循相關聯之語言或字母字典中所定義的排序和比較規則。
此選項對應到 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [二進位] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
BIN2 (_BIN2)1 依據 Unicode 資料的 Unicode 字碼指標來排序和比較 Analysis Services 中的資料。針對非 Unicode 資料,BIN2 將使用與二進位排序相同的比較。
使用 BIN2 排序順序的優點,就是比較已排序資料的應用程式並不需要重新排序資料。因此,BIN2 提供更簡化的應用程式開發和可能的效能提升。如需詳細資訊,請參閱<使用 BIN 和 BIN2 定序的指導方針>。
此選項對應到 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [二進位 2] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
區分大小寫 (_CS) 區分大寫和小寫字母。如果選取此選項,則小寫字母的排序會先於大寫字母。
此選項的設定方式是選取 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分大小寫] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
不區分大小寫 (_CI) 不區分大寫和小寫字母。在排序用途上,Analysis Services 視大寫和小寫字母相同。
此選項的設定方式是清除 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分大小寫] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
區分腔調字 (_AS) 區分有腔調和無腔調的字元。例如,'a' 不等於 'ấ'。
如果未選取此選項,在排序用途上,Analysis Services 視有腔調和無腔調字母相同。
此選項對應到 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分腔調字] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
不區分腔調字 (_AI) 不區分有腔調和無腔調字元。在排序用途上,Analysis Services 視有腔調和無腔調字母相同。
此選項的設定方式是清除 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分腔調字] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
區分假名 (_KS) 區分兩種類型的日文假名字元:平假名與片假名。
如果未選取此選項,在排序用途上,Analysis Services 視平假名和片假名相同。
附註:
不區分假名的排序沒有排序順序後置詞。
此選項對應到 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分假名] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
區分全半形 (_WS) 區分單一位元組字元和以雙位元組字元表示的相同字元。
如果未選取此選項,在排序用途上,Analysis Services 視相同字元的單一位元組和雙位元組表示法相同。
附註:
不區分全半形的排序沒有排序順序後置詞。
此選項對應到 [Microsoft SQL Server 安裝精靈] 之 [定序設定] 頁面上的 [區分全半形] 選項,或 SQL Server Management Studio 中之 [Analysis Server 屬性] 對話方塊的 [語言/定序] 頁面。
1 如果選取 BIN2,則無法使用區分大小寫、不區分大小寫、區分腔調字、不區分腔調字、區分假名和區分全半形等選項。
每一個 Windows 定序會與排序順序後置詞相結合,來定義大小寫、腔調字、全半形或假名的區分。例如,Analysis Services 之 Collation 組態屬性的預設值是 Latin1_General_AS_CS,它指定使用 Latin1_General 定序,以及區分腔調字、區分大小寫的排序順序。

[註] : 轉貼自 MS SQL Server 2008 線上叢書

2007/03/28

DataBase - 存取檔案至資料庫 (mssql2000)

環境:
DB : mssql 2000
Table schema :
id int,
fileContent image,
path varchar(255);

從檔案加入至資料庫

code:

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433", "cf-intermediate",
"cf-intermediate");

File file = new File("C:/MyEclipse5.1/workspace/myJava/abc.doc");
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));

// 將檔案讀入位元陣列
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[1];

while (bufferedInputStream.read(bytes) != -1) {
arrayOutputStream.write(bytes);
}
arrayOutputStream.close();
bufferedInputStream.close();
bytes = arrayOutputStream.toByteArray();

System.out.println("bytes="+bytes.length);

PreparedStatement preState = con.prepareStatement("insert into erpglm_append values(?,?,?)");
preState.setBytes(1, bytes);
preState.setString(2, file.getPath());
preState.setString(3, "N");

preState.execute();
con.close();
} catch (Exception e) {
e.printStackTrace();
}


從資料庫取得資料並存成檔案:

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433", "cf-intermediate",
"cf-intermediate");

String sql = "select fileContent from erpglm_append where id=1";
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery(sql);
byte[] bytes = null;
while (rs.next()) {
bytes = (byte[]) rs.getObject("fileContent");
}
rs.close();
stat.close();
con.close();

System.out.println("bytes="+bytes.length);

BufferedInputStream bufferedInputStream = new BufferedInputStream(new ByteArrayInputStream(bytes));
File file = new File("C:/MyEclipse5.1/workspace/myJava/abc1.doc");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
byte[] data = new byte[1];
while (bufferedInputStream.read(data) != -1) {
bufferedOutputStream.write(data);
}
bufferedOutputStream.flush();
bufferedInputStream.close();
bufferedOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}

NGINX SSL/設定檔案

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #...