PDA

View Full Version : مشكل با اصلاح ي و ك در ديتابيس طبق كد موچود در سايت



swallow.pa
سه شنبه 05 دی 1391, 12:44 عصر
با سلام
به لينك زير رفنم و اسكريپت اصلاح كد پيج رو دانلود كردم
http://barnamenevis.org/showthread.php?324714-%D8%A7%D8%B5%D9%84%D8%A7%D8%AD-%D8%AD%D8%B1%D9%88%D9%81-%DA%A9-%D9%88-%DB%8C-%D8%AF%D8%B1-%D8%AF%D8%A8%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3&p=1426137#post1426137
خب كدها اينه
[CODE]
--سلام.
--این SP رو اجرا کنید و در یک اسکریپت بنویسید:
--Exec ChangeCodePage

--تمام جداولتون اصلاح خواهند شد.
--اگر جدول خاصی مد نظرتون هست نام اون رو جلوی نام SP بنویسید.




ALTER procedure [dbo].[ChangeCodePage]
@TblName varchar(100) = ''
as

set @TblName = ISNULL(@TblName, '')

select ROW_NUMBER() over (order by TBLs.TABLE_NAME, COLs.COLUMN_NAME) Row, TBLs.TABLE_NAME TblName, COLs.COLUMN_NAME ColName
into #t
from INFORMATION_SCHEMA.TABLES TBLs
join INFORMATION_SCHEMA.COLUMNS COLs on TBLs.TABLE_NAME = COLs.TABLE_NAME
where TABLE_TYPE = 'BASE TABLE'
and DATA_TYPE in ('char', 'nchar', 'varchar', 'nvarchar')
and (TBLs.TABLE_NAME = @TblName or @TblName = '')

declare @x varchar(1000)

create table #errors(Error varchar(1000))

declare @i int
set @i = 0

while 1 = 1
begin
set @i = (select top 1 Row from #t where Row > @i)
if @i is null
break

select @x = 'update [' + TblName + '] set [' + ColName + '] = Replace( Replace( Replace([' + ColName + '], nchar(1603), nchar(1705)), nchar(1610), nchar(1740)), nchar(1609), nchar(1740))'
from #t
where Row = @i

begin try
exec(@x)
end try

begin catch
insert into #errors
values(char(13) + char(10) + 'ERROR: ' + char(13) + char(10) + @x + char(13) + char(10))
end catch
end

if @TblName = ''
select *
from #errors

print 'CODE PAGE GHANGING DONE!'

drop table #t
drop table #errors





[CODE]
حالا مشكل من اينه كه نمي دونم چطور اونو اجرا كنم
بعنوان مثال من يك حدول person دارم كه فيلد هاي name - family ي . ك را مي خواهم اصلاح كنم
چطوري اين كار رو انجام بدم
ممنون

ferdin
سه شنبه 05 دی 1391, 13:15 عصر
با دستور زیر sp رو اجرا کنید :


Exec ChangeCodePage 'TableName'


به جای Table Name نام جدولتون رو بزارید.چون String هست باید توی Single Quote بزارید.

swallow.pa
سه شنبه 05 دی 1391, 21:01 عصر
با دستور زیر sp رو اجرا کنید :


Exec ChangeCodePage 'TableName'


به جای Table Name نام جدولتون رو بزارید.چون String هست باید توی Single Quote بزارید.
ببخشيد اصلا متوجه نشدم
sp يعني چه ؟
در اين مورد هم توضيح دهيد
به جای Table Name نام جدولتون رو بزارید.چون String هست باید توی Single Quote بزارید
ممنون

swallow.pa
پنج شنبه 07 دی 1391, 12:09 عصر
سوالاتم خيلي مبتدي بود و دوستان :عصبانی++: شدن و نمي خوان جواب بدن