SQL login name rename
SQL login name rename
SQL uzerinde yaklaşık olarak 15 kullanıcım var viewleri kullanırken kullanıcı adlarinda olan '.' (nokta) karakteri hataya neden oluyor.
Bu nedenle kullanıcıların login name lerini değiştirmek istiyorum.
Bununla ilgili yardimci olursanız sevinirm.
Bu nedenle kullanıcıların login name lerini değiştirmek istiyorum.
Bununla ilgili yardimci olursanız sevinirm.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Benim önerim;
- "select * from DBAdi.KullaniciAdi.TabloAdi" şeklindeki sorgular "select * from [DBAdi].[KullaniciAdi].[TabloAdi]" biçiminde kullanarak köşeli parantez içinde kullanarak özel karakter sorununu halletmek olacaktır.
- "select * from DBAdi.KullaniciAdi.TabloAdi" şeklindeki sorgular "select * from [DBAdi].[KullaniciAdi].[TabloAdi]" biçiminde kullanarak köşeli parantez içinde kullanarak özel karakter sorununu halletmek olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Denemedim ama kodda hata yok gibi.
Kod: Tümünü seç
Ex. usp_RenameLogin 'Test', 'TestLogin'
---Code should be put in master database ---
CREATE PROCEDURE usp_RenameLogin
@CurrentLogin sysname,
@NewLogin sysname
AS
DECLARE @SQLState AS VARCHAR(200)
--Configure server to allow ad hoc updat -- es to system tables
EXEC master.dbo.sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE
--Update user login name in master db
-- >
SET @SQLState = 'UPDATE master.dbo.sysxlogins SET [name] = ''' + @NewLogin + ''' WHERE [name] = ''' + @CurrentLogin + ''''
EXEC (@SQLState)
--Update user login name in each db wher -- e has access as in in sysusers table
--
SET @SQLState = 'EXEC master.dbo.sp_MSForEachDB ''UPDATE ?.dbo.sysusers SET [name] = ''''' + @NewLogin + ''''' where [name] = ''''' + @CurrentLogin + ''''''''
EXEC (@SQLState)
--Configure server to disallow ad hoc
-- >--updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE
GO
Bir kelimenin anlamını öğretsen bile yeter..



- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Bu view'ları yazdığı program tarafından çekmiyor musun? Alt tarafı ADOQuery sorgusu olarakMurats yazdı:Evet ama DB uzerine direk mudahale yetkim yok o nedenle kullanıcıların isimlerini değiştirmeyi düşünüyorum...
select * from [Kullaanici.Adi].[viewadi]
yazmak o kadar. DB içinde yazılmış kodlamalarda sıkıntı yaşıyorsan o başka tabi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
aşağıdaki çalıştırdım ama hata aldım.
Hata :
Yazmayi unutmusum SQL 2000 versiyonum.
Kod: Tümünü seç
Ex. usp_RenameLogin 'deneme', 'denemelogin'
---Code should be put in master database ---
CREATE PROCEDURE usp_RenameLogin
@CurrentLogin sysname,
@NewLogin sysname
AS
DECLARE @SQLState AS VARCHAR(200)
--Configure server to allow ad hoc updat -- es to system tables
EXEC master.dbo.sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE
--Update user login name in master db
-- >
SET @SQLState = 'UPDATE master.dbo.sysxlogins SET [name] = ''' + @NewLogin + ''' WHERE [name] = ''' + @CurrentLogin + ''''
EXEC (@SQLState)
--Update user login name in each db wher -- e has access as in in sysusers table
--
SET @SQLState = 'EXEC master.dbo.sp_MSForEachDB ''UPDATE ?.dbo.sysusers SET [name] = ''''' + @NewLogin + ''''' where [name] = ''''' + @CurrentLogin + ''''''''
EXEC (@SQLState)
--Configure server to disallow ad hoc
-- >--updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE
GO
Hata :
Kod: Tümünü seç
Server: Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'PROCEDURE'.
Server: Msg 137, Level 15, State 1, Line 21
Must declare the variable '@NewLogin'.
Server: Msg 137, Level 15, State 1, Line 26
Must declare the variable '@NewLogin'.
Hayır sorun o değil bir işlem yaparken hata veriyor.sabanakman yazdı:Bu view'ları yazdığı program tarafından çekmiyor musun? Alt tarafı ADOQuery sorgusu olarakMurats yazdı:Evet ama DB uzerine direk mudahale yetkim yok o nedenle kullanıcıların isimlerini değiştirmeyi düşünüyorum...
select * from [Kullaanici.Adi].[viewadi]
yazmak o kadar. DB içinde yazılmış kodlamalarda sıkıntı yaşıyorsan o başka tabi.
DB yi tanımadığım için nereyi kullanıyor neden hata veriyor hangi table hangi view ile baglı bilmediğim için bulmak oldukça zor.
yaklaşık 7000 kusur adet view var. 2000 kadar da table hangisi olduğunu benim bulmam çok zor.
Programı yazan kişi ile görüşmek lazım ki onlarda kullanıcılarinizi yeniden oluşturun diyorlar.
ilk olarak bunu çalıştır ve prosedürü create et.Murats yazdı:Sanırım ben kodu yanlış çalıştırıyorum.
Hepsini birden çalıştırmam problem yaratir mi yoksa parça parça mı çalıştırmak gerekiyor ?=
Kod: Tümünü seç
CREATE PROCEDURE usp_RenameLogin
@CurrentLogin sysname,
@NewLogin sysname
AS
DECLARE @SQLState AS VARCHAR(200)
--Configure server to allow ad hoc updat -- es to system tables
EXEC master.dbo.sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE
--Update user login name in master db
-- >
SET @SQLState = 'UPDATE master.dbo.sysxlogins SET [name] = ''' + @NewLogin + ''' WHERE [name] = ''' + @CurrentLogin + ''''
EXEC (@SQLState)
--Update user login name in each db wher -- e has access as in in sysusers table
--
SET @SQLState = 'EXEC master.dbo.sp_MSForEachDB ''UPDATE ?.dbo.sysusers SET [name] = ''''' + @NewLogin + ''''' where [name] = ''''' + @CurrentLogin + ''''''''
EXEC (@SQLState)
--Configure server to disallow ad hoc
-- >--updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE
GO
Kod: Tümünü seç
Ex. usp_RenameLogin 'Test', 'TestLogin'
Denemediğim için YEDEK almanı öneririm..
Bir kelimenin anlamını öğretsen bile yeter..



benim anlamadığım master vt sini enterprise manager ile değiştirsek olmazmı. sonuçta bunun kendiside bir veritabanı yani.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ilk olarak bunu çalıştır ve prosedürü create et.
Daha sonra,
Buradaki "Test" ve "Testlogin" isimleri eski isim ve olması gereken olarak değiştirerek çalıştır.
Denemediğim için YEDEK almanı öneririm..[/quote]
İlk kodu hatasiz olarak çalıştırdım.
Akabinde ise diğer kodu çalıştırmak istediğimde aşağıdaki hatayi aldım.
Kodlari master db uzerinde çalıştırdım.
Kod: Tümünü seç
CREATE PROCEDURE usp_RenameLogin
@CurrentLogin sysname,
@NewLogin sysname
AS
DECLARE @SQLState AS VARCHAR(200)
--Configure server to allow ad hoc updat -- es to system tables
EXEC master.dbo.sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE
--Update user login name in master db
-- >
SET @SQLState = 'UPDATE master.dbo.sysxlogins SET [name] = ''' + @NewLogin + ''' WHERE [name] = ''' + @CurrentLogin + ''''
EXEC (@SQLState)
--Update user login name in each db wher -- e has access as in in sysusers table
--
SET @SQLState = 'EXEC master.dbo.sp_MSForEachDB ''UPDATE ?.dbo.sysusers SET [name] = ''''' + @NewLogin + ''''' where [name] = ''''' + @CurrentLogin + ''''''''
EXEC (@SQLState)
--Configure server to disallow ad hoc
-- >--updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE
GO
Kod: Tümünü seç
Ex. usp_RenameLogin 'Test', 'TestLogin'
Denemediğim için YEDEK almanı öneririm..[/quote]
İlk kodu hatasiz olarak çalıştırdım.
Akabinde ise diğer kodu çalıştırmak istediğimde aşağıdaki hatayi aldım.
Kod: Tümünü seç
Server: Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'Ex.usp_RenameLogin'.
Kod: Tümünü seç
Ex. usp_RenameLogin 'Test', 'TestLogin'
Kod: Tümünü seç
Exec usp_RenameLogin 'Test', 'TestLogin'
Bir kelimenin anlamını öğretsen bile yeter..



Abi valla kusura bakmayın ben o kadar uzman değilim ondan anlamıyorum.conari yazdı:Kod: Tümünü seç
Ex. usp_RenameLogin 'Test', 'TestLogin'
olacaktıKod: Tümünü seç
Exec usp_RenameLogin 'Test', 'TestLogin'
Neyse hemen test edelim.
İşte sonuc hesap adi değişti süper bir durum.
sonuc olarak aşağıdakileri dedi local de deniyordum. Henuz asıl alana uygulamadım.
Kod: Tümünü seç
Configuration option 'allow updates' changed from 0 to 1. Run the RECONFIGURE statement to install.
(1 row(s) affected)
Configuration option 'allow updates' changed from 1 to 0. Run the RECONFIGURE statement to install.