① 我想在SYBASE 資料庫建立一個登錄的用戶名,但在SYBASE central 工具建立用戶時,總是提示用戶名無效
sa 不能登錄 用戶資料庫,用MS SQL Server無法實現,因為SQL Server 不允許刪除sa 帳號。
實在想實現該功能,請考慮使用Sybase SQL Server 11或Sybase ASE 12.5,它允許用戶帳號刪除SA帳號,當然後果自負,例如你需要一個帳號來繼承SA的權坦核限並且完成SA的工作。
另外,由於SQL Server 是以Sybase SQL Server 為基礎開發的並亂,所以管理起來也和Microsoft SQL Server 差不多絕信檔,容易上手。
② 請問一下大神 sybase central中 如何建立 資料庫 能詳細點嗎
進入sybase central連接伺服器後,先選擇database devices,然後在右邊點新增device,建完device 後,再選擇左邊的database 節點,然後再到右邊選擇新建資料庫,根據向導完成建立作業。
③ 如何設置Sybase的用戶許可權來處理進程
在使用Sybase資料庫的過程中,我們經常會遇到Sybase資料庫系統上鎖的情況,而多數情況下,用戶必須通過超級用戶身份登錄系統,以處理該進程。通常為了保障Sybase資料庫系統的安全性,超級用戶口令往往掌握在資料庫管理員的手中。
當上述情況發生時,如果資料庫管理員不在現場或無法通過其他方式進行處理時,口頭告知密碼雖然可以解決一時的燃眉之急,但資料庫系統的安全無疑會受到嚴重的威脅;而重新啟動Sybase資料庫系統也是一種解決的方法,不過這種作法很有可能造成資料庫中數據的丟失,甚至導致用戶資料庫的崩潰,不到萬不得已,請不要使用此方法。
如果能夠對用戶許可權加以設置,使普通用戶也能夠進行進程的處理,而又不用知曉Sybase數據消兄庫系統的超級用戶密碼,無疑是處理上述拿雀襲問題的解決方法。現在,筆者就把針對上述情況的整個處理過程詳細介紹給大家,以供參考。當然,您可以根據自己的需要設置普通用戶密碼,也可以限制更多的內容來處理資料庫系統中的進程。具體的處理過程如下文所示。
1.使用C語言編寫一個程序如下。
#include stdlib.h>
#include string.h>
#include fcntl.h>
#include time.h>
#include sys/types.h>
char *passwd() /*普通用戶需要的密碼: 簡單加密後字元串*/
{
struct tm *tp;
long secs;
char *buff;
buff=(char *)malloc(30);
secs=time((long *)0);
tp=localtime(&secs);
sprintf(buff,"%02d%02d%d",tp->tm_mon+1+9,tp->tm_mday+2,8);
return(buff);
}
main()
{
char str1[80],str2[80];
int i;
printf("passwd:");
system("stty -echo"); /* 不顯示*/
gets(str1);
system("stty echo");
for(i=3;i< 9;i++)str2[i-3]=str1[i]; /*截取輸入6個字元*/
str2[6]='\0';
if (strcmp(str2,passwd() ) ){
printf("passwd error!\n");
exit(1);
}
setuid(0);
system("/sybase/atuo/sybase_kill");
printf("\n");
}
然後進行編譯。
#cc c.c -o kill-spid
2.對產生的目標文件設置用戶的「s」許可權。
#chmod u+s obj-name
3.將目標文件放置在執行用戶的任意目錄下,例如,tmp目錄。
4.執行文件「sybase-kill」應該存放在僅可以允許訪問該文件的目錄下,並設置其許可權。例如,只允許Sybase用戶可以進行讀寫。
# mkdir /歲頌sybase/auto
#chmod 700 /sybase/atuo
#chmod g+t /sybase/atuo
#chown sybase:sybase /sybase/atuo
#cd /sybase/atuo
5.sybase-kill文件內容,具體如下。
trap '' 1 2 3 9 15 #設置屏蔽信號,目的是不允許中斷產生。
for pid in ` echo "set nocount on \n
select distinct blocked from master..sysprocesses
where blocked>0 \ngo"|isql -Uaaa -Paaaaaa -w200 -SFEBS|sed "1,2d" `
do
echo "Kill "$pid
isql -Usa -w200 -Sserv_name < < EOF
password123321
kill $pid
go
EOF
done
echo "ok"
上述內容會處理所有阻塞的進程,不管是否最終是由它引起的。當然,您也可以找出是誰引起的阻塞,然後再處理該進程,僅僅通過修改其「sybase-kill」文件內容即可完成。]
④ PB開發Sybase資料庫應用技巧集錦[1]
PowerBuilder(PB)是一種跨平台的且功能強大 性能優異的開發工具 在客戶端/伺服器系統結構的應用模式中 作為客戶端的一種面向對象的可視化設計工具 在與資料庫相連接操作的系統中得到較為廣泛的應用 筆者在使用PB開發Sybase資料庫應用 建立企業管理信息系統的過程中 積累了一點經驗和技巧 現將其中的一部分在此做點介紹 或許能夠對朋友們有點啟發和幫助一 PowerBuilder與Sybase SQL Server的連接
若在連接時出現問題 必須要冷靜多思考 首先要檢查客戶端的情況 確認Open Client已經安裝 並正確配置 要注意OPen Client必須與PowerBuilder同為 位 或同為 位 PB與Sybase連不上 常見的幾種錯誤現象及處理方法說明如下
已連接上Sybase資料庫 但在PB的資料庫(database)畫板中卻看不到用戶已經定義過的表
此時可打開isql或Sybase Advantage 用 sa 登錄到 master 資料庫 執行pbsyc sql腳本文件(該文件位於PB安裝盤的server目錄)即可 值得一提的是 對Sybase Adaptive Server的版本號要加以注意 根據資料對有的相關項進行點改動
在打開PB的項目畫板(Project)或庫畫板(Library)時 出現錯誤信息提示: cannot locate source management dll 這個問題是因為在安裝PB時 選擇了安裝版本控制軟體(如PVCS)的介面 實際上該用戶的機器上並未安裝相應的版本控制軟體
解決方法: 在PB的設置中 將版本控制軟體的介面去掉 具體操作步驟是 可在PB ini文羨友纖件中 找到[Library]節 將 SourceVendor= 這一行注釋去掉
資料庫連接正常 但打開用戶表時若該表中有漢字則出現亂碼
這個問題通常是由於客戶端的預設字元集設置和伺服器端的字元集設置不一致 應修改locales dat文件(該文件位於Sybase安裝目錄的locales子目錄下) 如果在Windows / 操作系統下 可修改[NT]節下的相關內容
若操作系統平台是Windows x 則修改[win ]節下的內容 在此節有一行文本為locale=default us_english is _ 則說明客戶端的預設字元集設為iso_ 開發中文管理信息系統一般建議將字元集改為cp o 在伺服器端必須要做相應的調整
二 PB編程的幾點技巧
在數據窗口(Datawindow)中實現數據列自動折行
PB軟體在市場上受用戶歡迎的原因之一 就是它的數據窗口功能很強 而且方便應用 在使用Datawindow時 常會遇到某列的數據太長 不能同時顯示全部的情況 若採用自動水平滾動 操作起來又不夠簡便 有一種方法能實現列數據多行顯示(自動折行) 具體步告搭驟如下
① 在Datawindow Panter中兄仿打開此DataWindow 在需設定自動折行的列上雙擊滑鼠 彈開此列的屬性窗口 點Position標簽 選中Autosize Heigh多選框; 再選擇Edit標簽 不選中Auto HorzScroll多選框 單擊OK按鈕 保存所做的修改
② 點中Detail Band(即寫有Detail的灰色長帶) 單擊滑鼠右鍵 選擇Properties 菜單項 選中Autosize Height多選框 單擊OK按鈕 保存所做的修改
lishixin/Article/program/PB/201311/24574