MAC ADRESS DO SERVIDOR
Pessoal, preciso pegar o endereço mac da placa do servidor, ou melhor, do micro que esta instalado o sql server, achei o código abaixo na net, e testei pelo manager studio, deu certo, acessei alguns bancos de clientes para testar, e trouxe o mac das máquinas. A dúvida, como executo essa instrução pelo vb6 ?, nesse caso não pode ser pelo vb.net nem c#. Caso alguém tenha uma forma mais simples, e puder passar....
declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36)))
insert into @t default values;
select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t
declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36)))
insert into @t default values;
select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t
É um script SQL...
Dim sql As String
sql = "declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36))); insert into @t default values;
select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t"
Dim sqlCommand as new SqlCommand
Set SqlCommand = new SqlCommand
SqlCommand.CommandText =sql
bla bla bla
Dim sql As String
sql = "declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36))); insert into @t default values;
select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t"
Dim sqlCommand as new SqlCommand
Set SqlCommand = new SqlCommand
SqlCommand.CommandText =sql
bla bla bla
Vb6 ?
em .net peguei de forma bem simples:
Carregar_Banco()
Sqlcmd = New SqlCommand("declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36))); insert into @t default values; select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t", Cnn)
Dr = Sqlcmd.ExecuteReader()
If Dr.Read Then
MsgBox("mac" & Dr("MacAddress"))
End If
Preciso em vb6, vou fazer mais uns testes..
em .net peguei de forma bem simples:
Carregar_Banco()
Sqlcmd = New SqlCommand("declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36))); insert into @t default values; select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t", Cnn)
Dr = Sqlcmd.ExecuteReader()
If Dr.Read Then
MsgBox("mac" & Dr("MacAddress"))
End If
Preciso em vb6, vou fazer mais uns testes..
Em VB6, simplesmente faça um recordset e rode esse script nele.
MacAddress é o campo da tabela que esse script gera.
MacAddress é o campo da tabela que esse script gera.
Citação:MacAddress é o campo da tabela que esse script gera
Sim, pela lógica seria, mas não esta vindo, acho que algo na string não esta formatado corretamente, mesmo sendo a mesma que usei no vb.net. Esta retornando nula ou vazia.
sql = "declare @t table (i uniqueidentifier default newsequentialid(), m as cast(i as char(36))) insert into @t default values; select substring(m,25,2) + '-' + substring(m,27,2) + '-' + substring(m,29,2) + '-' + substring(m,31,2) + '-' + substring(m,33,2) + '-' + substring(m,35,2) AS MacAddress FROM @t"
Set Rs = New ADODB.Recordset
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
If Not Rs.EOF Then
MsgBox ("mac " & Rs!MacAddress)
End If
Tenta:
MsgBox ("mac " & Rs.Fields("MacAddress").Value)
ou
MsgBox ("mac " & Rs.Fiends(0).Value)
MsgBox ("mac " & Rs.Fields("MacAddress").Value)
ou
MsgBox ("mac " & Rs.Fiends(0).Value)
Não vem, o erro esta na sintaxe, não chega a abrir o recorset, joguei na rotina de tratamento, na linha "If Not Rs.EOF Then" (operação não permitida qdo o objeto esta fechado), não esta gerando erro de sintaxe, mas não chega a abrir o rs.....
Tenta esse script:
Ele não cria uma tabela temporária.
DECLARE @macAddressValue CHAR(36);
SET @macAddressValue = CAST(newsequentialid() AS CHAR(36));
SELECT
SUBSTRING(@macAddressValue, 25, 2) + '-' +
SUBSTRING(@macAddressValue, 27, 2) + '-' +
SUBSTRING(@macAddressValue, 29, 2) + '-' +
SUBSTRING(@macAddressValue, 31, 2) + '-' +
SUBSTRING(@macAddressValue, 33, 2) + '-' +
SUBSTRING(@macAddressValue, 35, 2) AS MacAddress;
Ele não cria uma tabela temporária.
Não vai, retorna que esse tipo de consulta precisa criar ou alterar uma tabela.. coisa de doido.. rssss
é....
Desculpa ai, posso estar sendo bem tosco mas desde quando newsequentialid() vai retornar um mac address ???
Se você quer um GUID, peça um GUID....
Essa função em banco que vocês estão discutindo tanto não vai só gerar um GUID aleatório e pronto ?
Desculpa ai, posso estar sendo bem tosco mas desde quando newsequentialid() vai retornar um mac address ???
Se você quer um GUID, peça um GUID....
var guid = Guid.NewGuid()
Essa função em banco que vocês estão discutindo tanto não vai só gerar um GUID aleatório e pronto ?
Citação:é....Desculpa ai, posso estar sendo bem tosco mas desde quando newsequentialid() vai retornar um mac address ???Se você quer um GUID, peça um GUID....var guid = Guid.NewGuid()Essa função em banco que vocês estão discutindo tanto não vai só gerar um GUID aleatório e pronto ?
Não sei não.. rssss. Achei na net dizendo que pegava o mac do servidor, ai testei pelo manager no meu micro e tbm acessando servidores de clientes, trouxe o q seria o tal mac de cada, e manteve o mesmo, não sei se seria mac, ou alguma key da instalação em questão.. O que eu preciso, é saber se o sistema esta acessando o sql server do servidor que ele foi instalado. Por que isso ?, Tive um caso q o técnico clonou o servidor pra trocar o disco, e depois acabaram fazendo acesso do sistema, nos dois servidores e tive problemas. Meu sistema tem um controle de licenças que acessa um bd em nuvem, onde registra alguns dados do acesso, pensei em coletar o mac do servidor, justamente pra saber se esta acessando do servidor licenciado para o cliente.
Tópico encerrado , respostas não são mais permitidas