VS2010的黑色主題(Dark Template)
解決 Management Studio 管理工具無法變更表格結構的問題
1. 開啟「工具」→「選項」
2. 切換到「設計師」類別,將「防止儲存需要資料表重建的變更」的核取項目取消勾選即可,並按下確定按鈕即可。
結婚與愛情
別人分享的文章….深有感觸
從小我們就以為結婚就是Happy Ending:「從此過著幸福快樂的日子」,我們以為結婚了就幸福了,就拿到愛情的證書、就是愛情的終點。
長大後、成熟後,自己經歷了感情、看多了旁人的婚姻,才發現,原來,結了婚過的幸福的並沒有想像中那麼多,甚至不幸福的用各種理由撐著婚姻的更多。
原來,有的感情可以同甘、不能共苦,有的禁得起風雨,但禁不起平凡。相愛那一刻,彼此可以海誓山盟,不愛的時候,你連多看他一眼都嫌煩。人會變、愛會變,有的婚姻沒有了愛情,還有親情、道義、習慣,甚至金錢來維繫,有的人可以接受沒有愛情的婚姻,有的人卻不能。
婚姻,大部分的時候不是為了愛情而活,是為了生活而活。年紀漸長,我們不得不承認,相處比相愛重要,因為再浪漫的愛情,都會被生活瑣事、家庭關係所磨滅。海誓山盟可能抵不過你今天垃圾忘了丟。
不相愛的兩人,卡在婚姻裡成了怨偶,或許,他們離開了婚姻,可以變成朋友。其實我們更要欣賞他們的誠實和勇敢,真正的勇敢不是忍耐一段發爛的關係委屈求全、自欺欺人,而是懂得放手、放過自己、放過別人,因為你還有讓自己幸福的能力。人生並不是只有一條路可以走。
或許我們現在唸童話故事給孩子聽時,我們要改一下「從此幸福快樂」的說法,而是告訴他們,不管一段關係之後會不會讓你幸福,你都要擁有跳出高塔、活出自我的勇氣。
人沒有完美,幸福也沒有完美。我們都會犯錯、都在學習,我們都愛過,也都痛過,對於過去,好好放下,對於別人,多給祝福。不愛你的人也曾對你好過,記得好就好,恨別人只是傷了自己。
幸福沒有Happy Ending,而是把握每一天,把它當作相愛的第一天、活著的最後一天來過,活在當下、愛在當下,且行且珍惜。
最後你會發現,真正的幸福不一定是來自於愛情,而是來自於你自己的內心。
應用程式組態設定檔 / Application Configurable
https://dotblogs.com.tw/yc421206/archive/2010/08/08/17076.aspx
app.Config檔案的<userSettings>跟<applicationSettings>這兩個結構初始狀態會跟著exe.config跑,只要對<userSettings>結構有修改的動作它會將資料另外存到:
WinXP
C:\Documents and Settings\使用者\Local Settings\Application Data
Win7
C:\Users\使用者\AppData\Local
[SQL]將多筆資料合併為一筆顯示(FOR XML PATH)
用北風資料庫舉例
step1:先讓我們看看orderID = ‘10248’的產品有哪些
SELECT * FROM [Order Details]
where OrderID = '10248'
有這些
step2:然後我們利用for xml path把他合併顯示
SELECT cast(ProductID AS NVARCHAR ) + ',' from [Order Details]
where OrderID = '10248'
FOR XML PATH('')
輸出是這樣,可以發現果然productID都合併了
step3:然後改成顯示所有的order的productID
SELECT OrderID,(SELECT cast(ProductID AS NVARCHAR ) + ',' from [Order Details]
where OrderID = ord.OrderID
FOR XML PATH('')) as productIDs
from orders ord
GROUP BY orderid
輸出像是這樣,所有的order的productID,但是productID還多一個逗號
step4:最後動些手腳,輸出就完美了,成功的將多筆資料合併為一筆
SELECT m.OrderID ,left(m.productIDs,len(m.productIDs)-1) as productIDsFinal from
(SELECT OrderID,(SELECT cast(ProductID AS NVARCHAR ) + ',' from [Order Details]
where OrderID = ord.OrderID
FOR XML PATH('')) as productIDs
from orders ord
GROUP BY orderid) M --這個M一定要加,不知道為啥
ORDER by M.OrderID
最後輸出:
踩到我的點
這次的NZ行,同行友人說我和另一位男生的脾氣怎麼那麼好,都不會生氣。
我回「是因為沒有踩到我的點,要不然我的脾氣是很不好的」
不禁讓我思考,什麼是我的點?
談我的前女友?指責我不是?鬼打牆問問題?
就算指著我罵也不一定生氣,反覺得遇到神經病而一笑置之,沒想到自己的修養變好了…哈哈!!
要說一定會讓我生氣的事,應該是對我身旁的人不禮貌吧!!
我一向很重視這類表面功夫,禮尚往來,遇到你的朋友會給你面子,也希望你遇到我朋友也能給我面子…
或許有人覺得這沒什麼,但對於這我有自己的堅持。
像那種遇到人都不打招呼的,扣分都扣光啦!!
Open Live Writer
https://sofree.cc/open-live-writer/
終於有新版本了,還是OPEN SOURCE!!
sp_MsForEachTable使用說明
sp_MsForEachTable這指令是微軟沒有記錄在公開文件的預儲程序,在Master資料庫中的系統預儲程序中可以找到這個指令,透過這指令可以輕鬆取得每一資料表的詳細資訊,也可透過這個指令執行資料表的維護作業。
於目前常見SQL Server 版本中,透過下列指令可以取得使用者自訂資料表的相關訊息。
--SQL2000、SQL2005、SQL2008、SQL2008R2適用 EXEC sp_spaceused 'Production.ProductProductPhoto' GO
如果需要列出資料庫中所有資料表的訊息,就必須於上列指令一一指定每個資料表,而無法在單次查詢中就取得所有訊息,透過sp_MsForEachTable指令可以幫助你將每個資料庫中的資料表的訊息彙總起來。
執行sp_MsForEachTable必須提供參數,若未提供錯誤訊息如下所示:
在SQL Server 2000中執行sp_MsForEachTable未提供參數的錯誤訊息
在SQL Server 2008R2中執行sp_MsForEachTable未提供參數的錯誤訊息
接著借由sp_MsForEachTable指令幫助我們執行指令sp_spaceused,
完整指令如下:
--SQL2000、SQL2005、SQL2008、SQL2008R2適用 EXEC sp_MsForEachTable "Sp_SpaceUsed '?'" GO --或 EXEC sp_MsForEachTable "Sp_SpaceUsed [?]" GO --或 EXEC sp_MsForEachTable 'EXEC Sp_SpaceUsed [?]' GO
接著我們再來列出單一資料庫內所有資料表資料列筆數
-- SQL2000、SQL2005、SQL2008、SQL2008R2適用 USE AdventureWorks GO EXEC sp_MsForEachTable "SELECT '?' AS 'TableName',COUNT(*) AS 'RowCount' FROM ?" GO
更進階的應用是我們可以把SP_SPACEUSED產生的資料彙總儲存到一個資料表,
範例如下:
USE AdventureWorks GO CREATE TABLE #MyTblInfo ( [name] nvarchar(256),--資料表名稱 [rows] int,--現有資料列數量 [reserved] varchar(18),--資料表磁碟保留空間大小 [reserved_int] int default(0),--資料表磁碟保留空間大小整數值 [data] varchar(18),--資料表實體資料使用磁碟空間大小 [data_int] int default(0),--資料表實體資料使用磁碟空間大小整數值 [index_size] varchar(18),--資料表索引使用磁碟空間大小 [index_size_int] int default(0),--資料表索引使用磁碟空間大小整數值 [unused] varchar(18),--保留給資料表未使用的磁碟空間大小 [unused_int] int default(0)--保留給資料表未使用的磁碟空間大小整數值 ) GO --將產生的資料寫入暫存資料表#MyTblInfo EXEC sp_MSforeachtable "INSERT INTO #MyTblInfo ([name],[rows],[reserved],[data],[index_size],[unused]) EXEC sp_spaceused '?'" GO --從[reserved]、[data]、[index_size]、[unused]取出數字並更新到對應的整數值欄位 UPDATE #MyTblInfo SET [reserved_int] = CAST(SUBSTRING([reserved], 1, CHARINDEX(' ', [reserved])) AS int), [data_int] = CAST(SUBSTRING([data], 1, CHARINDEX(' ', [data])) AS int), [index_size_int] = CAST(SUBSTRING([index_size], 1, CHARINDEX(' ', [index_size])) AS int), [unused_int] = CAST(SUBSTRING([unused], 1, CHARINDEX(' ', [unused])) AS int) GO --顯示資料 SELECT [name],[rows],[reserved],[reserved_int], [data],[data_int],[index_size],[index_size_int], [unused],[unused_int], CAST(([reserved_int] + [data_int] + [index_size_int] + [unused_int]) /1024.0 AS VARCHAR) + ' MB' AS 'TABLESIZE', ([reserved_int] + [data_int] + [index_size_int] + [unused_int]) /1024.0 AS 'TABLESIZE_FLOAT' FROM #MyTblInfo ORDER BY data_int DESC GO --//TABLE SIZE SELECT (CAST(SUM(data_int)/1024.0 AS VARCHAR) + ' MB') AS 'DATA_FILE_SIZE', (CAST(SUM(index_size_int)/1024.0 AS VARCHAR) + ' MB') AS 'INDEX_FILE_SIZE', (CAST(SUM(unused_int)/1024.0 AS VARCHAR) + ' MB') AS 'UNUSED_FILE_SIZE', (CAST((SUM(data_int) + SUM(index_size_int) + SUM(unused_int))/1024.0 AS VARCHAR) + ' MB')AS 'TOTAL_FILE_SIZE' FROM #MyTblInfo GO DROP TABLE #MyTblInfo GO
參考資料:
SQL Server Undocumented Stored Procedures sp_MSforeachtable and sp_MSforeachdb
By Gregory A. Larsen