Tempdb

當我連接到數據庫時,總是以 tempdb 連接

  • April 17, 2019

我正在嘗試從 jsp 會話執行 sybase DB 查詢。

我可以很好地連接到數據庫,但是當我執行查詢時,預設情況下它總是針對 tempdb 執行。

有沒有辦法可以連接到不同的數據庫,而不是預設連接到 tempdb?

目的是能夠對使用者從下拉列表中選擇的任何表執行查詢。我有下拉列表工作,可以成功選擇任何數據庫。我知道這是有效的,因為我將選擇的數據庫儲存在變數中,並且可以確認選擇的名稱始終是我可以在變數中看到的名稱。

創建您的登錄名的 DBA 似乎已將 tempdb 設置為您的預設數據庫。您可以要求他/她按照本文在登錄定義級別進行更改。預設情況下,如果沒有提及,則使用者連接到 master 數據庫。您可以使用以下命令:

sp_modifylogin login_name, defdb, "your_database"

請注意,上述命令需要在 Sybase 數據庫級別執行,並且只有系統管理員或系統安全員才能執行 sp_modifylogin。

正如 Markp 已經建議的那樣,您可以發出use <database_name>更改數據庫的命令。或者,您可以在連接字元串本身中使用數據庫名稱。

下面是連接到“your_database”的 isql 範例

isql -S"Server_Name" -U"Login" -D"Your_Database" -P"Password"

您可以參考下面的 isql 選項:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1570100/doc/html/san1367605044069.html

以上希望有所幫助。

假設這是 Sybase ASE …您可以在 sysobjects 前面加上所需數據庫的名稱(例如 pubs.sysobjects),但是您會遇到問題,因為其中一些系統函式仍將使用 tempdb 中的詳細資訊進行操作;您最好的選擇是use <dbname>在送出實際查詢之前讓您的應用程序發出(作為單獨的命令)。

引用自:https://dba.stackexchange.com/questions/234924