1. 將 SQL Server 的 instance 還有 SQL Server Agent 執行的Account都換成 Domain 的Account 重新啟動 Service 2. 所換的Account 在本機及網路磁碟機都必須有足夠的權限,最好是 domian administrators 指令 BACKUP DATABASE DataBaseName TO DISK = '\\UNCName\FolderName\BackupDataBaseName.Bak';
- 2月 02 週一 200913:33
如何將資料庫備份到網路的分享磁碟上
- 2月 02 週一 200911:45
縮小資料庫中所有DB的Log
DECLARE MY_CURSOR Cursor FOR
SELECT name FROM sys.databases
where name not in ('master','tempdb','model','msdb') --開啟cursor
Open MY_CURSOR
--定義cursor裡要取出的物件
DECLARE @name VARCHAR(100) --進入cursor
Fetch NEXT FROM MY_CURSOR INTO @name
--當陳述式失敗,或資料列超出結果集時停止迴圈
While (@@FETCH_STATUS <> -1)
BEGIN
--偵錯或加入要應用的程式碼
exec ('USE [master]
backup log '+@name+' with truncate_only
dbcc shrinkdatabase ('+@name+',1024)
declare @logName VARCHAR(100)
USE ['+@name+']
set @logName=(select name from sysfiles where status & 0x40 = 0x40)
dbcc shrinkfile (@logName,10) ') --再到下個指標去
FETCH NEXT FROM MY_CURSOR INTO @name
END
--關閉cursor
CLOSE MY_CURSOR
--釋放cursor
DEALLOCATE MY_CURSOR
SELECT name FROM sys.databases
where name not in ('master','tempdb','model','msdb') --開啟cursor
Open MY_CURSOR
--定義cursor裡要取出的物件
DECLARE @name VARCHAR(100) --進入cursor
Fetch NEXT FROM MY_CURSOR INTO @name
--當陳述式失敗,或資料列超出結果集時停止迴圈
While (@@FETCH_STATUS <> -1)
BEGIN
--偵錯或加入要應用的程式碼
exec ('USE [master]
backup log '+@name+' with truncate_only
dbcc shrinkdatabase ('+@name+',1024)
declare @logName VARCHAR(100)
USE ['+@name+']
set @logName=(select name from sysfiles where status & 0x40 = 0x40)
dbcc shrinkfile (@logName,10) ') --再到下個指標去
FETCH NEXT FROM MY_CURSOR INTO @name
END
--關閉cursor
CLOSE MY_CURSOR
--釋放cursor
DEALLOCATE MY_CURSOR
- 1月 14 週三 200915:12
清除Html Tag 的Function
static string StripHtmlTags(string text)
{
Regex r = new Regex(@"<head[\s\S]*?</head([^>])*>|<(script|style)[\s\S]*?</(script|style)([^>])*>|<(.|\n)*?>");
return r.Replace(text, string.Empty);
}
目前發現的漏網之魚
<!-- <span>abc</span> -->
會變成 abc -->
{
Regex r = new Regex(@"<head[\s\S]*?</head([^>])*>|<(script|style)[\s\S]*?</(script|style)([^>])*>|<(.|\n)*?>");
return r.Replace(text, string.Empty);
}
目前發現的漏網之魚
<!-- <span>abc</span> -->
會變成 abc -->
- 1月 14 週三 200914:57
Array 是可以排序滴
Array 的型態是可以自訂排序的
範例
public class ReverseComparer: IComparer<string>
{
public int Compare(string x, string y)
{
return y.CompareTo(x);
}
}
public static void Main()
{
string[] dinosaurs = {"P", "A", "T", "M", "D", "E"};
ReverseComparer rc = new ReverseComparer();
Array.Sort(dinosaurs, rc);
}
結果會變成 T,P,M,E,D,A
範例
public class ReverseComparer: IComparer<string>
{
public int Compare(string x, string y)
{
return y.CompareTo(x);
}
}
public static void Main()
{
string[] dinosaurs = {"P", "A", "T", "M", "D", "E"};
ReverseComparer rc = new ReverseComparer();
Array.Sort(dinosaurs, rc);
}
結果會變成 T,P,M,E,D,A
- 1月 05 週一 200912:44
Window Form 中的 DataGridview 類似 Web Form GridView RowDataBound 的Event
DataGridview 本身並沒有 類似 RowDataBound 的Event 可以用 CellFormatting 來取代 範例: void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
string val = e.Value.ToString();
if (e.RowIndex > -1 && e.ColumnIndex >= -1 && val != null && val=="2")
{
e.CellStyle.BackColor = Color.Red;
e.Valaue="Red";
}
}
{
string val = e.Value.ToString();
if (e.RowIndex > -1 && e.ColumnIndex >= -1 && val != null && val=="2")
{
e.CellStyle.BackColor = Color.Red;
e.Valaue="Red";
}
}
- 12月 31 週三 200817:32
SQL 2005 內建的產生 hash 的功能及 將 byte轉成 base64字串的技巧
1.產生 hash :在 SQL 2005版本中, 已內建了 HashBytes function 用來做 Hash 的功能, 可以參考該 function 的用法: http://msdn.microsoft.com/en-us/library/ms174415.aspx. 2.將byte 轉成 base64的字串 : 利用 SQL 2005 提供的 將xml 裡 binary的內容轉成base64的語法 "FOR XML RAW, BINARY BASE64"
- 12月 30 週二 200813:42
ImageButton 無法用CSS控制BORDER
因為ImageButton 產生HTML code時永遠會自動加上 style="border-style:Solid;border-width:0px;" 所以當套用CSS時,會沒有作用. 似乎是一個ASP.NET的BUG 解決方法: 不要用ImageButton
- 12月 30 週二 200811:16
如何測量程式的執行時間 (使用 Stopwatch )
Stopwatch 是 .NET 2.0中提供的新類別 可以用來測量時間. MSDN提供的範例,如下: using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime, "RunTime");
}
}
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime, "RunTime");
}
}
- 12月 24 週三 200811:15
在 unit test 時發生 System.NotSupportedException: 不支援 STA 執行緒上多個控制代碼的 WaitAll
如果在程式中使用 multithreading 而且使用 waitall() ,當要做unit test時,會發 Technorati Tags: Troubleshooting,Unit Test 生 "System.NotSupportedException: 不支援 STA 執行緒上多個控制代碼的 WaitAll" 這個exception 原因: 因為Vistual Studio 的 unit test 中預設是為 STA threading model ,當使用必須是MAT model(像是WaitHandle.WaitAll)就會發生錯誤 解決方式: 修改測試回合組態(.testrunconfig) <TestRunConfiguration ...> ... <ExecutionThread apartmentState="MTA" /> </TestRunConfiguration>
- 5月 29 週一 200623:47
C#2.0 List <T> = 指定型別的ArrayList
.NET Framework 2.0 新增的重要的功能 "泛型"
而List<T> 是ArrayList 的泛型類別.
ArrayList 是一種非常好用的集合,可以放入任何類型的資料,又不用跟Array一樣要事先宣告長度. 但是這樣太過於開放有時候會造成一些困擾.例如你需要讓集合中的資料一定要某些型別,但是又不知道集合的長度.這時候就可以使用ArrayList的泛型類別 List<T>.
List<T> = 必須指定型別的Array List
<T> 表示型別的意思
例如:
List<string> list =new List<string>();
list.Add("1");
string str= list[0] ;
用List<string> 的好處是
1.放入資料時,可以限定型別,這樣一來如果放錯型別在編譯階段就會被發現.
2.取出時不用再轉型,可以增加程式的效能.
當然 SortedList 也有對應的泛型類別 SortedList<TKey,TValue>
而List<T> 是ArrayList 的泛型類別.
ArrayList 是一種非常好用的集合,可以放入任何類型的資料,又不用跟Array一樣要事先宣告長度. 但是這樣太過於開放有時候會造成一些困擾.例如你需要讓集合中的資料一定要某些型別,但是又不知道集合的長度.這時候就可以使用ArrayList的泛型類別 List<T>.
List<T> = 必須指定型別的Array List
<T> 表示型別的意思
例如:
List<string> list =new List<string>();
list.Add("1");
string str= list[0] ;
用List<string> 的好處是
1.放入資料時,可以限定型別,這樣一來如果放錯型別在編譯階段就會被發現.
2.取出時不用再轉型,可以增加程式的效能.
當然 SortedList 也有對應的泛型類別 SortedList<TKey,TValue>