Comandos Query analizer

Segue alguns exemplos de comandos para rodar no query analizer:


-- Tornar uma conta VIP
UPDATE MEMB_INFO SET vip=1 WHERE memb___id='nome_da_conta'

-- Tornar uma conta Não VIP (free)
UPDATE MEMB_INFO SET vip=0 WHERE memb___id='nome_da_conta'

-- Listar todas a contas VIP
SELECT memb___id FROM MEMB_INFO WHERE vip=1
--Listar todas a contas Não VIP

SELECT memb___id FROM MEMB_INFO WHERE vip=0

-- Editar Dias Ban
UPDATE Character SET Dias_Ban=dias do ban WHERE name ='nome do user

-- Editar Resets na Conta
UPDATE Character SET Resets=Numero de resets WHERE name ='Nome da conta'

-- Bloquear uma Conta
UPDATE MEMB_INFO SET bloc_code=1 WHERE memb___id='nome_da_conta'

-- Desbloquear uma Conta
UPDATE MEMB_INFO SET bloc_code=0 WHERE memb___id='nome_da_conta'

-- Desbloquear todas Contas
UPDATE MEMB_INFO SET bloc_code=0

-- Bloquear todas Contas
UPDATE MEMB_INFO SET bloc_code=1
--Listar todas a contas bloqueadas
SELECT memb___id FROM MEMB_INFO WHERE bloc_code=1
--Listar todas a contas desbloqueadas
SELECT memb___id FROM MEMB_INFO WHERE bloc_code=0
--Colocar um char de ADM
UPDATE Character SET CtlCode=10 WHERE Name='nome_do_char'
--Retirar um char de ADM
UPDATE Character SET CtlCode=1 WHERE Name='nome_do_char'
--Tornar um char de GM
UPDATE Character SET CtlCode=8 WHERE Name='nome_do_char'
--Retirar um char de GM
UPDATE Character SET CtlCode=1 WHERE Name='nome_do_char'
--Listar Todos Chars de GM
SELECT Name FROM Character WHERE CtlCode=8
--Listar Todos Chars de ADM
SELECT Name FROM Character WHERE CtlCode=10
--Listar Todas Contas Online
SELECT memb___id FROM MEMB_STAT WHERE ConnectStat=1
--Listar Todas Contas Offline
SELECT memb___id FROM MEMB_STAT WHERE ConnectStat=0
--Limpar todas as contas que ficaram online presas (Efetuar este comando com o servidor OFF)
UPDATE MEMB_STAT SET ConnectStat=0 WHERE ConnectStat=1
--Tornar uma Conta VIP
UPDATE MEMB_INFO SET vip=1 WHERE memb___id='nome_da_conta'
--Tornar uma Conta N�o VIP
UPDATE MEMB_INFO SET vip=0 WHERE memb___id='nome_da_conta'
--Listar Todas Contas VIP
SELECT memb___id FROM MEMB_INFO WHERE vip=1
--Listar Todas Contas N�o VIP
SELECT memb___id FROM MEMB_INFO WHERE vip=0
--Ver Contas de ADM
SELECT memb___id FROM Character WHERE CtlCode=10
--Ver Contas de GM
SELECT memb___id FROM Character WHERE CtlCode=8
--Auto Ban Em Quem Dupa Em Seu Server
if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial')
drop procedure WZ_GetItemSerial
go
CREATE procedure WZ_GetItemSerial
as
BEGIN
DECLARE @ItemSerial int
set nocount on
begin transaction
update GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1
else 1
end )
if(@@error <> 0)
begin
rollback transaction
select-1
end
else
begin
commit transaction
select @ItemSerial
end
END
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AllItemsLog]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CopyLog]
GO
CREATE TABLE [dbo].[AllItemsLog] (
[items_id] [int] IDENTITY (1, 1) NOT NULL ,
[items_type] (1) NOT NULL ,
[items_serial] (4) NOT NULL ,
[items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CopyLog] (
[copy_id] [int] IDENTITY (1, 1) NOT NULL ,
[copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[copy_whdata] [binary] (1200) NOT NULL ,
[copy_date] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AllItemsLog] ADD
CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],
CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],
CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]
GO
CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CopyLog] ADD
CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character]
FOR UPDATE
AS
BEGIN
IF UPDATE(inventory)
BEGIN
SET NOCOUNT ON
DECLARE
@wh_acid varchar(10),
@wh_data binary(1200),
@wh_type binary(1),
@wh_serial binary(4),
@cr_user varchar(10),
@cr_acid varchar(10),
@cr_data binary(760),
@cr_type binary(1),
@cr_serial binary(4),
@al_acid varchar(10),
@j int,
@k int,
@find bit
SELECT @cr_acid=i.accountid,
@cr_data=i.inventory
FROM inserted i
SET @j=0
SET @find=0
WHILE @j<76 AND @cr_data IS NOT NULL
BEGIN
SET @cr_type=SUBSTRING(@cr_data,@j*10+1,1)
SET @cr_serial=SUBSTRING(@cr_data,@j*10+4,4)
IF @cr_type<>0xFF AND @cr_serial<>0x00000000
BEGIN
SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial
IF @al_acid IS NULL
INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)
ELSE
BEGIN
UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial
SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid
SET @k=0
WHILE @k<120 AND @wh_data IS NOT NULL
BEGIN
SET @wh_type=SUBSTRING(@wh_data,@k*10+1,1)
SET @wh_serial=SUBSTRING(@wh_data,@k*10+4,4)
IF @wh_type=@cr_type AND @wh_serial=@cr_serial
SET @find=1
SET @k=@k+1
END
END
END
SET @j=@j+1
END
IF @find=1
BEGIN
INSERT INTO copylog (copy_whdata,copy_acid,copy_date) VALUES (@wh_data,@al_acid,getdate())
-- this is wer u can add more punishment like ban or lock characters
UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid
END
SET NOCOUNT OFF
END
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
DECLARE @al_acid char(50)
set @al_acid = 'ASUS'
UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid
go
select * from AllItemsLog
select * from CopyLog
--Auto Backup Sem Gravar Por Cima
Essa job faz backup da data base com a data e hora que foi feito o backup, asssim ele não grava por cima e se ocorrer uma eventualidade você saberá exatamente de quando é o backup que vc está usando. É só criar uma job com esse código. O tempo você escolhe, recomendo colocar de hora em hora.

declare @database varchar(15), @directory varchar(30), @tmp varchar(55)
select @directory = 'c:/backups/', --> Diretório (completo, com '/' no final, como está por padrão)
@database = 'muonline', --> Banco de dados
@tmp = @directory + @database + '_' + convert(varchar(50), replace(replace(getdate(), ' ', '_'), ':', '-')) + '.backup'
backup database @database to disk = @tmp
--Auto Reset Free e Vip
Sistema de Resete:

- Restes Free:

- 1° ao 10° resetes: Ganha 500 pontos, reseta no level 400.

- 11° ao 50° resetes: Ganha 300 pontos, reseta no level 400.

- 51° ao 100° resetes: Ganha 200 pontos, reseta no level 400.

- 101° ao 400° resetes: Ganha 110 pontos, reseta no level 400.

- 401° para frente: Ganha 50 pontos, reseta no level 400.

____________________________________

Volta com: Level 1, e 18 em cada Stats

Zen para resetar: 50.000.000


- Resetes Vip:


1° ao 10° resetes: Ganha 600 pontos, reseta no level 370.

11° ao 50 resetes: Ganha 400 pontos, reseta no level 370.

51° ao 100° resetes: Ganha 250 pontos, reseta no level 370.

101° ao 400° resetes: Ganha 120 pontos, reseta no level 370.

401° para frente: Ganha 60 pontos, reseta no level 370.

____________________________________

Volta com: Level 30, e 100 em cada Stats

Zen para resetar: 1

Com esse sistema a concorrencia fica melhor e mais competitivo.

Vip fica FULL com: 1372
Free fica FULL com: 1773

- Job Resete Free:

UPDATE Character
SET clevel=('1'),
Experience=('0'),
Money=Money-('50000000'),
LevelUpPoint=500+500*resets,
resets=resets+1,
Strength=('18'),
Dexterity=('18'),
Vitality=('18'),
Energy=('18'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399
AND Memb_Stat.ConnectStat = 0
and Money>('50000000')
and resets<10
AND MEMB_INFO.vip = 0
--////
UPDATE Character
SET clevel=('1'),
Experience=('0'),
Money=Money-('50000000'),
LevelUpPoint=2000+300+300*resets,
resets=resets+1,
Strength=('18'),
Dexterity=('18'),
Vitality=('18'),
Energy=('18'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399
AND Memb_Stat.ConnectStat = 0
and Money>('50000000')
and resets>= 10
and resets<50
AND MEMB_INFO.vip = 0
--////
UPDATE Character
SET clevel=('1'),
Experience=('0'),
Money=Money-('50000000'),
LevelUpPoint=6700+200+200*resets,
resets=resets+1,
Strength=('18'),
Dexterity=('18'),
Vitality=('18'),
Energy=('18'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399
AND Memb_Stat.ConnectStat = 0
and Money>('50000000')
and resets>= 50
and resets<100
AND MEMB_INFO.vip = 0
--////
UPDATE Character
SET clevel=('1'),
Experience=('0'),
Money=Money-('50000000'),
LevelUpPoint=15500+110+110*resets,
resets=resets+1,
Strength=('18'),
Dexterity=('18'),
Vitality=('18'),
Energy=('18'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399
AND Memb_Stat.ConnectStat = 0
and Money>('50000000')
and resets>= 100
and resets<400
AND MEMB_INFO.vip = 0
--////
UPDATE Character
SET clevel=('1'),
Experience=('0'),
Money=Money-('50000000'),
LevelUpPoint=39390+50+50*resets,
resets=resets+1,
Strength=('18'),
Dexterity=('18'),
Vitality=('18'),
Energy=('18'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399
AND Memb_Stat.ConnectStat = 0
and Money>('50000000')
and resets>= 400
and resets<4000
AND MEMB_INFO.vip = 0

- Resete Vip:

UPDATE Character
SET clevel=('30'),
Experience=('0'),
Money=Money-('1'),
LevelUpPoint=600+600*resets,
resets=resets+1,
Strength=('100'),
Dexterity=('100'),
Vitality=('100'),
Energy=('100'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>369
AND Memb_Stat.ConnectStat = 0
and Money>('1')
and resets<10
AND MEMB_INFO.vip = 1
--////
UPDATE Character
SET clevel=('30'),
Experience=('0'),
Money=Money-('1'),
LevelUpPoint=2000+400+400*resets,
resets=resets+1,
Strength=('100'),
Dexterity=('100'),
Vitality=('100'),
Energy=('100'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>369
AND Memb_Stat.ConnectStat = 0
and Money>('1')
and resets>= 10
and resets<50
AND MEMB_INFO.vip = 1
--////
UPDATE Character
SET clevel=('30'),
Experience=('0'),
Money=Money-('1'),
LevelUpPoint=9100+250+250*resets,
resets=resets+1,
Strength=('100'),
Dexterity=('100'),
Vitality=('100'),
Energy=('100')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>369
AND Memb_Stat.ConnectStat = 0
and Money>('1')
and resets>= 50
and resets<100
AND MEMB_INFO.vip = 1
--////
UPDATE Character
SET clevel=('30'),
Experience=('0'),
Money=Money-('1'),
LevelUpPoint=21850+120+120*resets,
resets=resets+1,
Strength=('100'),
Dexterity=('100'),
Vitality=('100'),
Energy=('100'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>369
AND Memb_Stat.ConnectStat = 0
and Money>('1')
and resets>= 100
and resets<400
AND MEMB_INFO.vip = 1
--////
UPDATE Character
SET clevel=('30'),
Experience=('0'),
Money=Money-('1'),
LevelUpPoint=45730+60+60*resets,
resets=resets+1,
Strength=('100'),
Dexterity=('100'),
Vitality=('100'),
Energy=('100'),
MapNumber=('0'),
MapPosX=('125'),
MapPosY=('125')
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>369
AND Memb_Stat.ConnectStat = 0
and Money>('1')
and resets>= 400
and resets<4000
AND MEMB_INFO.vip = 1
--Backup de DB
Comece fazendo uma job:
Enterprise Manager>Management>SQL Server Agent>Jobs

- Aba General:

Clicamos com o direito na área a direita e em seguida "New Job". Na primeira tela, em "Name" colocaremos um nome para a job, pode ser "backup"(sem as aspas). Aba Step: Clicamos em "Step" e em baixo "New", uma nova tela abrirá, em "Step name" coloque um nome, pode ser o mesmo colocado no início do processo.

- Em "Type" deixe como está, em "Database" selecione "master", em command cole isto:

BACKUP DATABASE [muonline] TO DISK = N'C:\MuServer\DB Bak\db_muonline.bak' WITH INIT , NOUNLOAD , NAME =N'muonline backup', NOSKIP , STATS = 10, NOFORMAT

  • Clique em "Parse", depois "Apply", depois "OK".
  • - Explicando o comando:
    C:\MuServer\DB Bak\db_muonline.bak
    Esse trecho quer dizer que ele vai salvar o backup no caminho que está ali, no meu caso, criei uma pasta chamada "DB Bak" dentro da pasta do meu MuServer, e lá fica o backup.

"db_muonline.bak" é o nome que vai ficar o arquivo de backup, pode alterar, desde que mantenha o .bak no final.

- Dica: Adicionando a mesma linha duas vezes no comando, só mudando o local onde vai ser salvo, é uma boa para quem pretende salvar o backup em mais de um local ao mesmo tempo.

- Criando a Schedule:

- Depois de dado ok no comando, vamos para a aba "Schedules", clicamos em "New Schedule".

Aba Schedules:
Em "Name" colocamos um nome, pode ser novamente o mesmo do início...
Clicamos lá em baixo, em "Change".

- Na próxima tela vem um passo muito importante, vamos configurar a frequência que será feito o backup, digamos que seja de 4 em 4 horas, configuremos da seguinte maneira:

- Clique em "Daily", observe que ao lado ficou "Every 1 day(s)", quer dizer que vai ocorrer todos os dias, deixe assim.

- Mais abaixo marque "Occurs every:", mais ao lado ponha "4", mais ao lado ponha "Hours"

- Assim ficou configurado para acontecer todos os dias, de 4 em 4 horas, o tempo pode ser mudado a gosto, mas acho que 4 horas tá muito bom.

Dê "OK" na janela, e siga dando "OK" nas demais, em "Jobs" então irá aparecer a job que você criou, clique com o botão direito do mouse sobre ela e ponha "Start Job".

--B�nus Para Novos Personagens
USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'MUC_BONUS' AND type = 'TR')
DROP TRIGGER MUC_BONUS
GO

CREATE TRIGGER MUC_BONUS ON Dbo.Character FOR INSERT
AS
BEGIN

-- Bonus para Novos Chars

DECLARE
@Resets INT,
@Pontos INT,
@Dinheiro INT,
@Char varchar(10)
SELECT @Char = Name FROM INSERTED

SET @Resets = 10 -- INSERIR QUANTIDADE DE RESETS
SET @Pontos = 3500 -- INSERIR QUANTIDADE DE PONTOS INICIAIS
SET @Dinheiro = 1000000 -- INSERIR QUANTIDADE DE DINHEIRO

UPDATE Dbo.Character
SET Resets = @Resets, LevelUpPoint = @Pontos, Money = @Dinheiro
WHERE Name = @Char
END

Observação: PARA NÃO USAR MAIS, basta rodar o script abaixo uma única vez no query analyzer e estará removida.

USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'MUC_BONUS' AND type = 'TR')
DROP TRIGGER MUC_BONUS
GO

--Bonus em Golds, Semanal ou Mensal com Tempo Online
declare @AccountID varchar (10)
declare @Name varchar(10)
declare @reset int
declare @tempoonline int
declare @ds int
Select top 1 @AccountID=AccountID,@Name=Name,@reset=ResetCount from character order by ResetCount, clevel desc
Update memb_info set gold=gold+5 where memb___id=@AccountID
-----
Select top 1 @AccountID=AccountID,@Name=Name,@tempoonline=tempo online from character order by tempoonline desc, name desc
Update memb_info set gold=gold+5 where memb___id=@AccountID
-----
Select top 1 @AccountID=AccountID,@Name=CharacterName,@ds=Point from EVENT_INFO order by Point desc, CharacterName desc
Update memb_info set gold=gold+5 where memb___id=@AccountID

-------------------------------------------------------------------------

- Crie uma Schedule para passar uma vez por semana para criar uma premiação semanal ou se preferir mensal.

--------------------------------------------------------------------------

- Entendendo o codigo:

- O codigo acima irá premiar o primeiro do Ranking do Devil Square, Resets e Tempo Online automaticamente com '5' Golds.

- Sendo que TempoOnline é uma coluna na Character que marca as horas online dos personagens, aqui na tem um trigger que faz este processo, podendo ser em minutos e horas, ,@tempoonline uma coluna virtual para ser passado o codigo, deve ser declarada acima. VEJA ABAIXO NESTE TOPICO O CODIGO DA TRIGGER DE TEMPOONLINE.

- Resets a coluna que determina o numero de resets é claro, @resets uma coluna virtual para ser passado o codigo, deve ser declarada acima.

- Point a coluna onde marca o numero de pontos na Event_info do Devil Square, @ds a coluna virtual para ser passado o codigo.

- Para adicionar mais uma premiação você precisará declarar acima uma coluna virtual e adicionar mais uma linha abaixo dando 'Select ...'.

- Digamos que quero premiar o jogador que obtem mais level na determinada hora e dia da semana ou mes marcada pela schedule e claro, veja como ficará:

declare @AccountID varchar (10)
declare @Name varchar(10)
declare @reset int
declare @tempoonline int
declare @ds int
declare @clevel int

Select top 1 @AccountID=AccountID,@Name=Name,@reset=Resets from character order by Resets desc
Update memb_info set gold=gold+5 where memb___id=@AccountID
-----
Select top 1 @AccountID=AccountID,@Name=Name,@tempoonline=tempo online from character order by tempoonline desc
Update memb_info set gold=gold+5 where memb___id=@AccountID
-----
Select top 1 @AccountID=AccountID,@Name=CharacterName,@ds=Point from EVENT_INFO order by Point desc
Update memb_info set gold=gold+5 where memb___id=@AccountID
-----
Select top 1 @AccountID=AccountID,@Name=Name,@clevel=clevel from Character order by clevel desc
Update memb_info set gold=gold+5 where memb___id=@clevel

-------------------------------------------------------------------------

CODIGO PARA CRIAR TRIGGER DE (TEMPO ONLINE) OBTIDO AQUI NA RZBR:

Adicionando Coluna Tempoonline em character:

USE MuOnline
ALTER TABLE Character ADD TempoOnline int DEFAULT (0)

-------------------------------------------------------------------------

Dropando caso sua DB ja tiver esta Trigger:

DROP TRIGGER MembStat_RecordOnlineHours

-------------------------------------------------------------------------

Adicionando Trigger:

CREATE TRIGGER [MembStat_RecordOnlineHours] ON dbo.MEMB_STAT
AFTER UPDATE
AS
declare @memb___id varchar(10)
declare @connectstat tinyint
SELECT @memb___id=memb___id,@connectstat=connectstat FROM INSERTED
IF (@connectstat = 0)
BEGIN
UPDATE [dbo].[Character]
SET TempoOnline = TempoOnline + datediff(hour, (SELECT ConnectTM FROM MEMB_STAT WHERE memb___id= @memb___id), getdate())
WHERE Name = (SELECT GameIDC FROM AccountCharacter WHERE Id=@memb___id)
END

Nota: a Trigger acima irá atualizar tempoonline a cada uma hora online, pois assim está determinado no codigo como 'hour', para converter para minutos para colocar onde marquei de vermelho para 'minute'
--Apagar Todas as Contas do Banco de Dado
- Basta colocar no query, selecionar MuOnline e apertar f5. Seu server vai ser totalmente resetado!

DELETE MEMB_INFO
DELETE CHARACTER
DELETE MEMB_STAT
DELETE MuCashShop_DATA
DELETE warehouse
DELETE WZ_CW_INFO
DELETE GuildMember
DELETE Guild
DELETE AccountCharacter
DELETE ExtWareHouse

- Para quem usa site do Leandro Daldegam acrescente:

DELETE webRankingCharactersLevel
DELETE webRankingCharactersMasterReset
DELETE webRankingCharactersPk
DELETE webRankingCharactersResets
DELETE webRankingCharactersResetsMonth
DELETE webRankingCharactersResetsWeek
DELETE webRecord
DELETE webScreenshots
DELETE AwebVips
DELETE GuildMember
DELETE Guild
8

--Deletar Contas Que Nunca Logaram
Essa query serve pra deletar contas que foram criadas mas nunca foram logadas. Basta executar no query analiser.

DECLARE @Acc varchar(10), @Chars varchar(10), @test int
select @test = 0
DECLARE LISTA CURSOR LOCAL FOR
SELECT memb___id FROM MEMB_INFO
OPEN LISTA
FETCH NEXT FROM LISTA INTO @Acc
WHILE @@FETCH_STATUS = 0
begin
if (SELECT COUNT(*) FROM Character where AccountID=@Acc) = 0
begin
DELETE from MEMB_INFO where memb___id=@Acc
DELETE from VI_CURR_INFO where memb___id=@Acc
select @test = @test + 1
end

FETCH NEXT FROM LISTA INTO @Acc
end
CLOSE LISTA
DEALLOCATE LISTA
print @test

- Lembrando: Sempre fazer backup antes de executar a query, para caso ocorra um problema você não perder os dados.

--Deletar Guilds Com Score Baixo
Essa query e para delatar Guilds com score baixo:

DELETE GuildMember
From GuildMember join Guild on GuildMember.G_Name = Guild.G_Name
where Guild.G_Score < ('10')
DELETE Guild
where G_Score < ('10')

- Em 10 você escolhe o total de score que você quer que ele delete, no caso 10 a query vai deletar de 10 pra menos permanecendo somente os acima de 10.
--Entendendo Jobs
Esta JOB deleta automaticamente chars com nick Webzen

1º - Abra o Enterprise Manager
2º - Vá em SQL Server Group / (LOCAL) (Windows NT) / Management / SQL Server Agent / Jobs
3º - Botão Direito clica em NewJob...
4º - Em General bote o nome WEBZEN
5º - Em Steps clique em New e bote o nome WEBZEN, selecione a Database MuOnline e em command cole esse codigo:

DECLARE @Acc varchar(10), @Chars varchar(10), @test int
select @test = 0
DECLARE LISTA CURSOR LOCAL FOR
SELECT name FROM character WHERE name LIKE '%webzen%'
OPEN LISTA
FETCH NEXT FROM LISTA INTO @Acc
WHILE @@FETCH_STATUS = 0
begin
if (SELECT COUNT(*) FROM Character where name=@Acc)>0
begin
DELETE from character where name=@Acc
select @test = @test + 1
end

FETCH NEXT FROM LISTA INTO @Acc
end
CLOSE LISTA
DEALLOCATE LISTA
print @test

- Clique em Apply e OK.

6º - Em Schedules clique em New Schedules e bote o nome WEBZEN, após clique em Change, selecione Dialy e bote para rodar em 1 em 1 minutos.

Pronto ! so da OK em tudo que ficou aberto e Start na JOB e todos que criar char com nick webzen e deletado o char automaticamente.

--Evolu��o de Classes (BM, DM, HE, LE, GM)
-- Reset por pontos (NÃO VIP)

UPDATE Character
SET clevel=('1') , experience=('0') , LevelUpPoint=300+300*Resets , Resets=Resets+1 , Strength=('20') , Dexterity=('20') , Vitality=('20') , Energy=('20') , Inventory=null, MagicList=null
FROM Character join Memb_Stat on Character.Accountid = Memb_Stat.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE clevel>399 and MEMB_INFO.vip=0 and MEMB_STAT.ConnectStat=0

- UPDATE Character = Fazer update na tabela character.

- Set clevel=('1') = O level que ele vai ter após o reset

- experience=('0') = A experiencia q ele vai ter após o reset

- LevelUpPoint=300+300*Resets = Pontos por Reset

- Resets=Resets+1 = Para somar os Resets, ou seja, Resets (os resets atuais dele) +1

- Strength=('20') , Dexterity=('20') , Vitality=('20') , Energy=('20') = Botar os Status dele = 20 se não botar isso, vira Reset Acumulativo

- Inventory=null = Resetar o Inventorio

- MagicList=null = Resetar a Lista de Magias

- WHERE clevel>399 = O level de Reset, tem de deixar 1 level a menos, pois a pessoa já começa level 1, então se for level 350 o reset, tem de botar 349

- MEMB_INFO.vip=0 = Esse seria o vip na MEMB_INFO, se for o reset vip, você coloca 1, supervip, coloca 2 e assim por diante.

- MEMB_STAT.ConnectStat=0 = Esse é somente pra resetar se o ConnectStar tiver "0", ou seja, desconnectado
- O restante é apenas o código para funcionar.

--Deletar Guilds Com Score Baixo
- Nas configurações originais, o char deve ter um power reset (resetao, master reset) e está no mapa e cordenada certa fica com a conta off por 20 minutos.
- Por exemplo, um SM e quer evoluir a classe, deve ter um power reset, ir pra lorencia cordenada 190-30, aguardar 20 minutos e quand voltar irá virar Grand Master.

- Pra fazer a Job você deve ter a column PR (Power Reset)
--PR int 4 [ ] defalut 0

ou mude a linha:
and Character.PR >= 1
Troque as letras "PR" pelo nome da column do seu resetao, power reset, master reset o nome que você usar no seu server.

Pra quem nãoo tem o Power Reset no server mude a linha:
and Character.PR >= 1
Troque "PR" por "Resets" sem aspas e troque o numero "1" pelo numero de resets que você quer que evolua a classe.

Se preferir pode colocar por level, mude a linha:
and Character.PR >= 1
Troque "PR" por "cLevel" sem aspas e troque 1 pelo numero de level que você deseja que evolua a classe.

-> Lembrando na linha and Character.PR >= 1 esta >= ou seja, "maior ou igual a" se quiser que seja numero exato, retire o sinal de > (maior)

1) Abra o SQL Server Enterprise Manager.
2) Vai em Microsoft SQL Server\SQL Server Group\(local)(WindowsNT)\Databases\Management\SQL Server Agent\Jobs.
3) Clique direito em SQL Server Agent e Dê Start.
4) Clique botao direito e New Job.
5) Dê um nome ex: "Evoluir Classe" - sem aspas.
6) Clique na guia Steps.

- Clique no botao New...
- Em Step name: coloque novamente o nome Evoluir Classe
- Type:Transact:SQL Script (TSQL)
- Database: selecione MuOnline
- Em command: coloque esse código
-- Classes
-- BK=17 MG=48 ME=33 DL=64 SM=1
-- BM=18 DM=49 HE=34 LE=65 GM=2
--Money=Money-('1000000000') zen requerido
--Class=X Classe q irá evoluir
--And Memb_Stat.ConnectStat = 0 Checa se a acc ta off
--and Money > ('1000000000') Checa se zen eh maior q 1kkk
--and Character.Class = X Checa a classe
--and Character.PR >= 1 Checa se tem Power Resets
--and Character.MapNumber = 0 Checa o mapa
--and Character.MapPosX = 190 Checa a cordx
--and Character.MapPosY = 130 Checa a cordy

- Virar Grand Master

UPDATE Character SET
Money=Money-('1000000000'),
Class=2
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
And Memb_Stat.ConnectStat = 0
and Money > ('1000000000')
and Character.Class = 1
and Character.PR >= 1
and Character.MapNumber = 0
and Character.MapPosX = 190
and Character.MapPosY = 130

- Virar Blade Master

UPDATE Character SET
Money=Money-('1000000000'),
Class=18
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
And Memb_Stat.ConnectStat = 0
and Money > ('1000000000')
and Character.Class = 17
and Character.PR >= 1
and Character.MapNumber = 0
and Character.MapPosX = 26
and Character.MapPosY = 247

- Virar High Elf

UPDATE Character SET
Money=Money-('1000000000'),
Class=34
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
And Memb_Stat.ConnectStat = 0
and Money > ('1000000000')
and Character.Class = 33
and Character.PR >= 1
and Character.MapNumber = 3
and Character.MapPosX = 4
and Character.MapPosY = 246

- Virar Dual Master

UPDATE Character SET
Money=Money-('1000000000'),
Class=49
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
And Memb_Stat.ConnectStat = 0
and Money > ('1000000000')
and Character.Class = 48
and Character.PR >= 1
and Character.MapNumber = 0
and Character.MapPosX = 247
and Character.MapPosY = 153

- Virar Lord Emperor

UPDATE Character SET
Money=Money-('1000000000'),
Class=65
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
And Memb_Stat.ConnectStat = 0
and Money > ('1000000000')
and Character.Class = 64
and Character.PR >= 1
and Character.MapNumber = 0
and Character.MapPosX = 46
and Character.MapPosY = 169

- Clique em parse e dê ok na mensagem e ok na janela Edit Job Step

7) Clique na guia Schedules.

- Clique no botao New Schedules...
- Coloque novamente Evoluir Classe
- Marque Recurring e clique em Change...
- Em Occurs marque Daily
- Daily deixe 1
- Daily frequency marque Occurs every:
- Coloque quanto tempo quer para q a acc fique off (no meu caso coloco 20 minutos)

8) Dê ok na janela Edit Recurring Job Schedule, em Edit Job Shedule e na Evoluir Classe Proprieties.
9) Clique direito na Job criada e dê Start Job.

--Gerar ConnectMember
- Antes de tudo: REALIZE UM BACKUP DE SEU BANCO DE DADOS. Independente da ação simples deste script, não custa nada realizar um backup do banco de dados, antes de testar qualquer coisa.

- Qual a função deste script? Este script irá gerar um View das contas VIP do servidor, e uma procedure que poderá ser evocada a qualquer momento para gerar o arquivo ConnectMember.txt

- Vale lembrar que: Se o arquivo ServidorInfo.dat de seu servidor possui a opção ConnectMemberLoad = 1, somente as contas disponibilizadas dentro do ConnectMember.txt que podem se conectar ao servidor.

- Requisito Básico: Conhecimentos básicos no Query Analyzer. O script permanecerá instalado em seu banco de dados, e será chamado sempre que voce solicitar... isso pode ser via job, ou diretamente no Query.

- Como instalar os scripts:

1) Rode o script abaixo 1 vez, para instalar a tabela de View em seu banco de dados. Veja que no script, estou utilizando por padrao a coluna MEMB_INFO.VIP = 1 para os vips... voce pode alterar esta parte para atender suas necessidades.

-- LISTAGEM PARA VISUALIZACAO VIP

USE MuOnline
GO

CREATE VIEW MUC_VW_ML AS
SELECT MEMB___ID = '"' + MEMB___ID + '"'
FROM MEMB_INFO
WHERE VIP = 2
GO


2) Agora rode o script abaixo 1 vez, para instalar a Procedure que realizará a criaçao do arquivo txt sempre que solicitada.

-- PROCEDURE DE EXPORTACAO DE DADOS

USE MuOnline
GO

CREATE Procedure MUC_MEMBERLIST
(
@arquivo varchar(100)
)
AS
BEGIN
DECLARE @lista varchar(8000)
SELECT @lista = 'bcp MuOnline..MUC_VW_ML out '+ @arquivo + ' -c '
EXEC master..xp_cmdshell @lista
END
GO


3) Pronto, agora toda vez que voce precisar gerar um arquivo ConnectMember.txt em seu servidor, ou atualizá-lo, sem ter que digitar um por um, execute o comando abaixo no Query Analyzer.

EXEC MUC_MEMBERLIST 'C:\MuServer\SubServer\data\ConnectMember.txt'

4) Caso queira deletar o script de seu banco de dados, rode o script abaixo em seu Query Analyzer.

DROP Procedure MUC_MEMBERLIST
DROP View MUC_VW_ML
--Dar Golds Para Jogadores Online a Cada 3 Horas
- A cada 3 horas a job é executada e da para os usuarios online 10 GoldsEvent

- Antes de rodar a query tem que criar a coluna na memb_info a coluna GoldsEvent ! int | desmarcado | (0)

Job na query:

USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'EventGoldsHoras',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'EventGoldsHoras3horas',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'DECLARE @ConnectStat tinyint
DECLARE @memb___id varchar (10)

SELECT @memb___id=memb___id,@ConnectStat=ConnectStat FROM memb_stat WHERE ConnectStat=''1''
update memb_info set GoldEvent = GoldEvent + 10 where memb___id=@memb___id',
@database_name=N'MuOnline',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'EventGoldsHoras3horas',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=8,
@freq_subday_interval=3,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20100930,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
--Dar Golds / Ver IP/ Ver Logins Por Ip / Resetar Master Level
RESETAR MASTER LEVEL, Pontos e XP (Usado da ENC e outros)

- Para Determinado Char.

update T_MasterLevelSystem set MASTER_LEVEL='1', ML_EXP='0', ML_NEXTEXP='0', ML_POINT='0' where CHAR_NAME='Nick'

- Todos os chars.

update T_MasterLevelSystem set MASTER_LEVEL='1', ML_EXP='0', ML_NEXTEXP='0', ML_POINT='0'

Dar Golds/cash etc.. (para quem tiver online)

UPDATE MEMB_INFO SET gold = gold+1
FROM MEMB_INFO JOIN MEMB_STAT ON MEMB_INFO.memb___id = MEMB_STAT.memb___id COLLATE Latin1_general_CI_AI
WHERE (ConnectStat >= 1)

- Observação: Trocar "gold = gold+1" pela moeda que você desejar e trocar o "gold = gold+1" pela quantidade da moeda.

- Ver dados conexão da conta como: horário que logou ou saiu, qual servidor e principalmente IP

select * from memb_stat where memb___id='login'

- Ver todos logins/dados conexão de quem logou com determinado IP

select * from memb_stat where ip='IP'

--Job Para dar Gold Por Reset
declare @AccountID varchar (10)
declare @Name varchar(10)
declare @resetsday int
declare @memb___id varchar (10)
Select top 1 @AccountID=AccountID,@Name=Name,@ResetsDay =ResetsDay from character order by ResetsDay desc, name desc
Update memb_info set gold=gold+@ResetsDay where memb___id=@AccountID
Select @memb___id=memb___id from memb_info where memb___id =@AccountID
update character set ResetsDay = 0 where AccountID=@memb___id
--Apenas Letras e N�meros em Nome de Guilds
- Como faço um backup da procedure original?
- Abra seu query analyzer
- Conecte-se ao sql server
- No painel à esquerda - chamado "Object Browser" - clique no + na opção "MuOnline"
- Clique no + Stored Procedures
- Procure a procedure WZ_GuildCreate e clique com o botão direito do mouse no mesmo.
- Vá em "Script Object To File As > Alter"
- Salve em qualquer local do seu computador.
- Pronto, o backup da procedure está feito.

- Após ter feito o backup, vá no query analyzer, copie o código abaixo e dê F5:

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER procedure WZ_GuildCreate
@GuildName nvarchar(50),
@MasterName nvarchar(10)
as

IF (SELECT COUNT(*) FROM guild where G_Name=@GuildName )=0

BEGIN
DECLARE @p INTEGER
DECLARE @ErrorCode int

SET @ErrorCode = 0
SET XACT_ABORT OFF

Set nocount on

begin transaction

SELECT @p = PATINDEX('%[^a-zA-Z0-9]%',@GuildName)
IF(@p > 0)
BEGIN
SET @ErrorCode = 1
END

IF(@ErrorCode = 0)
BEGIN

INSERT INTO Guild (G_Name,G_Master,G_Score) values (@GuildName, @MasterName, 1)
IF(@@Error <> 0)
BEGIN
SET @ErrorCode = 1
END
END

IF(@ErrorCode = 0)
BEGIN

INSERT GuildMember (Name, G_Name, G_Level) values (@MasterName, @GuildName, 1)
IF (@@Error <> 0)
BEGIN
SET @ErrorCode = 2
END
END

IF(@ErrorCode <> 0)
rollback transaction
ELSE
commit transaction

select @ErrorCode

Set nocount off
SET XACT_ABORT ON
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

--Premia��o Castle Siege
Declare @Guild varchar(10);
Declare @Char varchar(10);
Declare @Conta varchar(10);

Declare @Premio int;
Declare @G_Status int;

Set @Guild = (Select OWNER_GUILD from MuCastle_DATA)

IF (@Guild <> '')
BEGIN

DECLARE C CURSOR FOR SELECT Name,G_Status FROM GuildMember Where G_Name = @Guild Order By G_Status desc

OPEN C
FETCH NEXT FROM C INTO @Char,@G_Status

WHILE @@FETCH_STATUS = 0
BEGIN

IF @G_Status = 128 -- G_status = 128 (Guild Master)
BEGIN
SET @Premio = 30;
END
IF @G_Status = 64 -- G_status = 64 (Assistente Guild Master)
BEGIN
SET @Premio = 20;
END
IF @G_Status = 32 -- G_status = 32 (Batle Master)
BEGIN
SET @Premio = 10;
END
IF @G_Status = 0 -- G_status = 0 (Membro)
BEGIN
SET @Premio = 5;
END
SET @Conta = '';
SET @Conta = (Select AccountID From Character where Name = @Char)

IF (@Conta <> '')
BEGIN
Update MEMB_INFO set Coins = Coins + @Premio where memb___id = @Conta
END

FETCH NEXT FROM C INTO @Char,@G_Status

END

CLOSE C
DEALLOCATE C

END

- Algumas Explicações:

• Na parte:

IF @G_Status = 128 -- G_status = 128 (Guild Master)
BEGIN
SET @Premio = 30;
END
IF @G_Status = 64 -- G_status = 64 (Assistente Guild Master)
BEGIN
SET @Premio = 20;
END
IF @G_Status = 32 -- G_status = 32 (Batle Master)
BEGIN
SET @Premio = 10;
END
IF @G_Status = 0 -- G_status = 0 (Membro)
BEGIN
SET @Premio = 5;
END

- Comparando a variavel @G_Status que recebe o valor referente a que tipo de membro estamos tratando..

@G_Status = 128 //Guild Master
@G_Status = 64 //Assistente de Guild Master
@G_Status = 32 //Batle Master
@G_Status = 0 //Player (Noob)

- Onde a Variavel @Premio é o valor definido para Cada posição, ou seja é editavel e fica a seu gosto....

- Na Linha:

Update MEMB_INFO set Coins = Coins + @Premio where memb___id = @Conta
--Premiando os Players Online com Cash
Use webSite
UPDATE webCash
SET amount = webCash_1.amount + 40
FROM MuOnline.dbo.MEMB_STAT INNER JOIN
webCash ON MuOnline.dbo.MEMB_STAT.memb___id = webCash.username CROSS JOIN
webCash AS webCash_1
WHERE (MuOnline.dbo.MEMB_STAT.ConnectStat = '1')
--Premiando Rank Semanal, Rank Mensal
- Primeiro crie uma JOB

- Coloque o nome de Premiando_Semanal

- Vá em step e coloque o codigo a baixo:

declare @AccountID varchar (10)
declare @

  • comandos, query, analizer, consulta
  • 0 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

Adicionar/Remover Bonus inicial

- Bônus de Reset + Pontos + Zen ao Criar ContaIF EXISTS (SELECT name FROM sysobjectsWHERE name =...

Fazer auto update launcher

Configurar o auto update do launcher Baixe o programa Gerador Update em nossa sessão de download

Alterar senha da web morpheus na hospedagem

Como alterar senha da web morpheus na hospedagem

Alterar senha da web morpheus pelo banco de dados

Alterar senha da web morpheus pelo banco de dados

Restaurar banco de dados (database)

Como restaurar banco de dados (database)