Tempdb
當我連接到數據庫時,總是以 tempdb 連接
我正在嘗試從 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 選項:
以上希望有所幫助。
假設這是 Sybase ASE …您可以在 sysobjects 前面加上所需數據庫的名稱(例如 pubs.sysobjects),但是您會遇到問題,因為其中一些系統函式仍將使用 tempdb 中的詳細資訊進行操作;您最好的選擇是
use <dbname>
在送出實際查詢之前讓您的應用程序發出(作為單獨的命令)。