目前分類:MSSQL (9)

瀏覽方式: 標題列表 簡短摘要

有時候在某些主機會需要確認資料庫能不能連線,但在 Web Server 上又不方便裝 SQL Server Management Studio (SSMS),同事建議我可以用 PowerShell 連線確認。如果有錯誤訊息,就表示某個地方出問題了;如果沒有印出任何訊息就回到命令提示字元,那就表示連得上。這樣 debug 方便很多!

# 連線字串
$connectionString = 'Data Source=127.0.0.1;database=testdb;User ID=testuser;Password=testpwd'

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

我在 PHP 裡對資料庫寫入一個時戳時間 (timestamp),假設是 1717689600 好了,我預期它應該是 2024/06/07,但是從 SQL Server (MSSQL) 取出後,它卻變成 2024/06/06。

我用 Epoch & Unix Timestamp Conversion Tools 線上轉換了 timestamp,發現這個時間原來是這樣:

  • GMT: 2024年6月6日 星期四 16:00:00
  • 台北時間:2024年6月7日 星期五 00:00:00 GMT+08:00

所以,原本我想要把這個 timestamp 處理成 "yyyy/mm/dd" 的格式,做了以下 SQL:

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

在 MSSQL 出現「無法卸除資料庫 {database},因為目前正在使用中。」

可以在 SQL Server Management Studio 先用以下指令查目前正在執行的 process:

SELECT spid, loginame, hostname, db_name(dbid) AS dbname FROM sys.sysprocesses WHERE dbid > 0

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

今天有個頁面吐出 HTTP 500,錯誤訊息是 SQL Server 的定序衝突:

PHP Fatal error:  Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_Taiwan_Stroke_CS_AS" 之間的定序衝突。

問了一下發現是我們原本的資料庫預設值是 Chinese_Taiwan_Stroke_CI_AS,根據《Microsoft SQL Server 的定序和字元集》,這表示「Chinese-Taiwan-Stroke、不區分大小寫、區分重音、不區分假名、不區分寬度」。

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

有一批程式從 MySQL 移轉到 MSSQL,沒有正常執行,翻了 error log,看到錯誤訊息是在執行資料庫語法時,出現「將 varchar 資料類型轉換成 datetime 資料類型時,產生超出範圍的值」。

先複習一下 MSDN 上頭,日期區間可容許的範圍:

可是我們的程式只抓資料區間在本月一日到月底之間的資料,為何會出錯?

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

原本有一段在 MySQL 上轉換日期的運算:

date_format(DATE_SUB(DATE_ADD(USER_DATE, INTERVAL 2 YEAR), INTERVAL 1 DAY), '%Y%m%d')

移轉到 MSSQL 之後要做以下加工:

  • date_format() 得換成指定時間字串型態的 convert()
  • DATE_SUB() 與 DATE_ADD() 要換成 DATEADD()

不過不知為何,一直出現錯誤訊息「轉換 expression 到資料類型 datetime 時發生算術溢位錯誤」(Error Arithmetic overflow error converting expression to data type datetime)

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

筆記一下最近遇到的 MySQL 資料庫移轉至 Sql Server 問題。

我們的環境:

  • PHP
  • Linux (RedHat) + Windows

1. 加解密函式轉換

文章標籤

小攻城師 發表在 痞客邦 留言(0) 人氣()

最近安裝 SQL Server 2008 後,遇到一些問題,筆記一下過程中發生的狀況與解決方法。

1. 資料庫檔案 (*.mdf) 無法正確附加。解決方式是在資料庫檔案上按右鍵→內容→切換至[安全性]頁籤,將檔案權限設定為「完全控制」給 NETWORK SERVICESQLServerMSSQLUser$<USERNAME>$MSSQLSERVER 這兩個帳戶。

小攻城師 發表在 痞客邦 留言(1) 人氣()

配合今天有個資料庫移機了,本來專案裡所有資料庫都在同一台機器上,這下就四散了,偏偏我的 SQL statement 有類似 "SELECT * FROM TA LEFT JOIN B.dbo.TB ON TA.C1=TB.C1 " 這種寫法,所以想說設個 Linked Server。一開始亂設當然是大失敗!最後參考保哥這篇《如何在 SQL 2005 中設定連結的伺服器(Linked Server)》和同事的協助設到好。

 

1. 開啟 SQL Server Management Studio,在物件總管中,找到「伺服器物件」→「連結的伺服器」,右鍵新增連結的伺服器

小攻城師 發表在 痞客邦 留言(0) 人氣()