1. 程式人生 > >MS-SQL2000中修改表和儲存過程的所有者

MS-SQL2000中修改表和儲存過程的所有者

昨天從客戶那拿一個數據庫來測試,客戶那邊資料表的所有者為msuser,我在本機匯入後一部分表變成了dbo,我要將它們改為dbo所有,找了好久,都說是"右擊表"-->"設計表"-->"右擊滑鼠"-->"屬性",然後在"所有者"欄中個性。我這個資料庫有幾十個表,這樣做太麻煩了,而且速度極慢,浪費時間。

後來在網上又找了好久,終於發現了一條SQL語句可以改,如下

 exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''dbo'''

將所有的資料表的所有者進行更改,使用者可以根據需要替換後面的dbo。

修改成功會提示:注意: 更改物件名的任一部分都可能破壞指令碼和儲存過程。

修改儲存過程:

 CREATE PROCEDURE ChangeProcOwner
   @OldOwner as NVARCHAR(128),--引數原所有者
   @NewOwner as NVARCHAR(128)--引數新所有者
   AS

   DECLARE @Name as NVARCHAR(128)   
   DECLARE @Owner as NVARCHAR(128)
   DECLARE @OwnerName as NVARCHAR(128)

   DECLARE curObject CURSOR FOR   
   select 'Name' = name, 'Owner' = user_name(uid)
   from sysobjects
   where user_name(uid)

[email protected] and xtype= 'p' 
   order by name

   OPEN     curObject
   FETCH NEXT FROM curObject INTO @Name, @Owner
   WHILE(@@FETCH_STATUS=0)
   BEGIN         
   if @[email protected]   
   begin
   set @OwnerName = @OldOwner + '.' + rtrim(@Name)
   exec sp_changeobjectowner @OwnerName, @NewOwner
   end

   FETCH NEXT FROM curObject INTO @Name, @Owner
   END

   close curObject
   deallocate curObject
   GO

執行 exec ChangeProcOwner 'xx','dbo'

注:××表示儲存過程原有的所有者

相關推薦

MS-SQL2000修改儲存過程所有者

昨天從客戶那拿一個數據庫來測試,客戶那邊資料表的所有者為msuser,我在本機匯入後一部分表變成了dbo,我要將它們改為dbo所有,找了好久,都說是"右擊表"-->"設計表"-->"右擊滑鼠"-->"屬性",然後在"所有者"欄中個性。我這個資料庫有幾十個表,

Oracle複製儲存過程編寫注意事項

Oracle中複製表或者複製表結構 1. 複製表結構及其資料:create table table_name_new as select * from table_name_old 2. 只複製表結構(

刪除指定SQL資料庫所有儲存過程

原理就是根據 sysobjects 系統表裡面查到每張表名,然後drop掉,同理可以一次性drop所有儲存過程 --刪所有資料表 USE [資料庫名] DECLARE @tableName VARCH

mysql修改欄位語句

-- 選擇指定 庫名 表名的欄位值 SELECT column_name FROM  information_schem

MySQL任務排程儲存過程實現實時修改中欄位值

DELIMITER $$USE `wqd_zw_platform`$$DROP PROCEDURE IF EXISTS `update_activity_state`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `update_activity_state`()B

學會使用MySQL自定義函式儲存過程

一、快速瞭解什麼是儲存過程和函式?   儲存過程和函式是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,呼叫儲存過程 和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對 於提高資料處理的效率是有好處的。   在對儲存過程或函式進行操作時,需要

簡單瞭解一下oracle的顯示遊標儲存過程

遊標   遊標主要分兩類動態和靜態遊標,靜態遊標是編譯時知道明確的select語句的遊標,靜態遊標分類兩種,顯示遊標和靜態遊標,這裡只說顯示遊標 顯示遊標 declare name emp.ename%type; sal emp.sal%type; --宣

查詢資料庫當前使用者下的所有儲存過程,檢視,觸發器

user_objects是oracle字典表的試圖,他包含了通過DDL建立的所有物件。表,試圖,索引。。等 all_table,  dba_table  , user_table   同理 Select object_name From user_obj

mysql修改的預設編碼中欄位的編碼

一個是修改表的編碼格式的 ALTER TABLE `table` DEFAULT CHARACTER SET utf8; 但是雖然修改了表的編碼格式,但是欄位的編碼格式並沒有修改過來,沒有什麼卵用 又發現一條語句,作用是修改欄位的編碼格式 ALTER T

資料庫第八次作業建儲存過程檢視舉例

1)用DDL寫出Booking表的定義,包括主鍵,外來鍵,域約束。** 主鍵由三個欄位組成,外來鍵來自多個表,分開寫更清晰, 域約束用check來限制,另外一種方法是用Domain,在建表之前就限制 CREATE TABLE Booking( hotelNo I

資料庫函式儲存過程的區別總結

資料庫的使用中,經常用到函式和儲存過程。都是為了實現某個sql功能,那麼這兩者有區別嗎?都適用哪些場景?總結如下 總的來說函式限制比較多,如不能用臨時表,只能用表變數等,而儲存過程的限制相對就比較少。 1.儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比

MySql 定時任務儲存過程,每月建立一張

最近用MySQL做了一個每月1號00:00:00建立一張表並將上個月的表資料匯入到新建立的表中,在此做個小記。 1. 要做這個之前先要: -- 設定好時區 set time_zone

修改MySql資料欄位的字符集排序規則

由於資料庫中的資料表和表字段的字符集和排序規則不統一,找了很多帖子,最後發現如下指令碼很好用。 用法兒是:先執行如下指令碼生成修改資料表和表字段的指令碼,然後再執行這些生成的指令碼。 1. 修改指定資料庫中所有varchar型別的表字段的字符集為UTF8,並將排序規則

SQL2000系統儲存過程、函式的功能介紹及應用

----系統表---------------------------------------------------------------------------------------------------- 雖然使用系統儲存過程、系統函式與資訊架構檢視已經可以為我們提

mysql 函式儲存過程的區別聯絡

怎麼查詢,怎樣寫sql在sql 語句中判斷不能用 == ,要用  =  就行了 ,賦值 用 := 函式  和 儲存過程的相同點 和不同點:函式的建立:函式只能在指定資料庫中用。 和儲存方法一樣delimiter $$create function 函式名稱(引數列表) ret

ORACLE建立包包體及包函式儲存過程

背景:在Oracle資料庫建立包,在包建立函式Function和儲存過程Procedure。在java專案中呼叫。 建立包,並在下面宣告包含的函式和儲存過程: create or replace p

Java呼叫資料庫的儲存過程儲存函式包體

1.java連線oracle資料庫的jdbc程式 public class JDBCUtils { private static String driver = "oracle.jdbc.Or

SQL2000系統儲存過程、函式的功能介紹及應用2009年01月21日 星期三 11:38雖然使用系統儲存過程、系統函式與資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊,但是對於某些特殊的元資料資訊,我們仍然需要直接對系統進行查詢。因為SQL

雖然使用系統儲存過程、系統函式與資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊,但是對於某些特殊的元資料資訊,我們仍然需要直接對系統表進行查詢。因為SQL Server 將所有資料庫物件的資訊均存放在系統表中,作為 SQL Server 的管理、開發人員,瞭解各個系統表的作用將有助於我們瞭解 SQL

MySQL利用自定義函式儲存過程建立海量,並使用索引優化

昨天學習韓順平老師的視訊時明白了上一章explain的意義,為了自己的聯絡,我學著建立了一個海量表,供自己練習使用。 程式碼如下: #建立表DEPT CREATE TABLE dept( /*部門表*/ deptno MEDIUMINT UN

linux下使用crontab儲存過程定期刪除db2的

1.建立儲存過程DelData_day() --設定指向的資料庫 SET SCHEMA = PSMS; --設定當前的路徑 SET CURRENT PATH =  "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","PSMS"; --建立儲存過