2010年1月21日 星期四

[SQL]SQL Server 遠端連線

除了大家都會知道的把遠端連線開啟之外,我卡在別的地方。
就是帳號密碼的設定。
SQL Server 可以採用純 windows 認證及 SQL Server 混合式認證。
而我,自己搞不清楚之間的不同,卡住一個星期。
在我的組態如下:
WEB Server 在電腦A,SQL Server 在電腦B,兩台都沒有加入網域。
SQL Serser 的管理只設定了 電腦B\administrator。
使用混合式認證。
當我在電腦A要連線 SQL Server 時,以下指令都失敗
(1)sqlcmd –S 電腦B
(2)sqlcmd –S 電腦B –U administrator
(3)sqlcmd –S 電腦B –U 電腦B\administrator
原因是
(1)的方式,是採用 windows 認證,user是電腦A當時的登入的帳號。電腦B裡沒有這個帳號,所以失敗。
(2)的方式,當有加入 –U 時,就是使用 SQL Server 認證,而 administrator 不在 SQL Server 使用者內。所以失敗。
(3)的方式,使用 SQL Server 認證,帳號是 windows 的帳號,這個樣子也是失敗。
遇到事情卡很久,果然休息是有用的,晚上睡覺的時候,突然靈感一來,
隔天先在電腦B的SQL Server新增一個 user,並增加他的權限到可以登入。然後再試一次
(4)sqlcmd –S 電腦B –U user
就解決了 connect string 的問題了。這是採用 SQL Server 認證的問題。

但是!
如果要使用 windows 認證呢?
現在還不知道,但是我想應該就要加入網域,使得 SQL Server 可以加入 電腦A\user 到 SQL Server 使用者裡。
這一段還需要時間來實作了。
有人知道的話,可以教我嗎?

2010年1月20日 星期三

[SQL]找出table的schema

找到的這個資料實在太棒了,一舉數得。
http://www.dotblogs.com.tw/lolota/archive/2009/09/05/10441.aspx

真的是順便學了很多 connection.GetSchema 的用法。

string[] restrictions = new string[4];
        restrictions[0] = "Northwind";
        restrictions[2] = "Employees";

        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);
        conn.Open();
        DataTable dt = conn.GetSchema("Columns", restrictions);
        conn.Close();
        GridView1.DataSource = dt;
        GridView1.DataBind();

[SQL]利用ADO找出現有的table

網路上找到且我試用過的方法有兩個

sqlconn = new System.Data.SqlClient.SqlConnection();
sqlconn.ConnectionString = connectstring;
sqlconn.Open();

// method 1
DataTable dt = sqlconn.GetSchema();
DataTable dt2 = sqlconn.GetSchema("Tables");
Literal1.Text= printTable(dt2);

// skill for write xml to string
//System.IO.StringWriter a=new System.IO.StringWriter();
//dt2.WriteXmlSchema(a);
//Response.Write(a.ToString());

// method 2
DataTable dt3 = new DataTable("Tables");
string commandstring = "select TABLE_NAME from INFORMATION_SCHEMA.Tables where TABLE_TYPE ='BASE TABLE'";
System.Data.SqlClient.SqlCommand sqlcmd = sqlconn.CreateCommand();
sqlcmd.CommandText = commandstring;
dt3.Load(sqlcmd.ExecuteReader());
Literal2.Text= printTable(dt3);

sqlconn.Close();

[SQL]SQL Server Express 連線字串

有個好網站可以參考
http://www.connectionstrings.com/sql-server-2005

目前我的組態是 IIS, ASP.NET, SQL Server Express 2005 都在本機。
ASP.NET 固定所使用的 username 據說是 NT AUTHORITY\NETWORK SERVICE
所以要把這個帳號加到 SQL Server 去。可參考
http://social.msdn.microsoft.com/forums/zh-TW/240/thread/011579f2-d3a6-4c2b-a7dc-b689d1e08acc

現在測試過成功的字串是
server=facetdev\sqlexpress;database=facetdb;integrated security=SSPI;

不成功的字串是
server=facetdev\sqlexpress;database=facetdb;uid=administrator;pwd=;
出現 error 為
使用者 'administrator' 的登入失敗。

若出現 error 為
當發生使用者 ' username ' 登入失敗。 使用者將無法與受信任的 SQL Server 連接相關聯。
則是要把 SQL Server Express 的認證模式改為「 混合模式 (Windows 的帳戶驗證 」 及 SQL Server 帳戶驗證) 」
可參考
http://www.dotblogs.com.tw/dotjum/archive/2009/03/31/7769.aspx

2010年1月12日 星期二

[www]html table column寬度不受控制

當table總寬度比整個畫面寬的時候,光是設定 th 或 td 的 width 還是不對勁。
還要設定 table 的 width 的總寬度,這樣才會是自己想要的樣子。

可以看 w3 對於 column width 的定義:
http://www.w3.org/TR/CSS21/tables.html#auto-table-layout

搞了整整兩天

2010年1月8日 星期五

[javascript]指定frame的location

parent 是指目前frame的上一層
top 是指最高的一層