Segue abaixo o utilitário exemplo para criar base de dados HFSQL, sem ter que passar o usuario e senha do Supervisor ou Admin do Hfsql. Assim pode criar o banco sem ter que pedir para o Administrador, como é o nosso caso aqui na Wx Soluções.
Exemplo pode ser feito facilmente, só usar esse codigo e criar as tabelas envolvidas.
// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] ws_create_database (<Token>, <Nome>, <Email>, <Telefone>, <DNS_Ip>, <Porta>, <Database>, <User>, <Password>)
//
// Parameters:
// Token:
// Nome: <specify the role of Nome>
// Email: <specify the role of Email>
// Telefone: <specify the role of Telefone>
// DNS_Ip: <specify the role of database>
// Porta: <specify the role of Usermaster>
// Database: <specify the role of PasswordMaster>
// User: <specify the role of User>
// Password: <specify the role of Password>
PROCEDURE ws_create_database(Token,Nome,
Email,
Telefone,
DNS_Ip,
Porta,
Database,
User,
Password)
ok is string
DbUserCreate is boolean = False
HReset(T001_Database)
IF HReadSeek(T001_Database,T001_Database,Database,hIdentical) = True THEN
Info("Esse banco de dados já foi criado!")
ELSE
IF Token <> "" AND Token = "abre-ti-cesamo" AND Database <> "" AND Nome <> "" AND Telefone <> ""
Myconn is Connection
Myconn..Server = DNS_Ip +":"+ Porta
Myconn..User = Usermaster
Myconn..Password = PasswordMaster
Myconn..Database = Database
Myconn..Provider = hAccessHFClientServer
HDescribeConnection(Myconn,
Usermaster,
PasswordMaster,
DNS_Ip +":"+ Porta,
Database,
hAccessHFClientServer,
hORead)
IF HOpenConnection(Myconn) = True THEN
IF HChangeConnection("*",Myconn) = True THEN
HModifyStructure("*")
HCreationIfNotFound("*")
//create db
ok = "Database criada com Sucesso!"
DbUserCreate = True
//Create user
HUser.Login = User
HUser.Password = Password
HUser.FullName = Nome
HUser.Email = Email
HUser.Phone = Telefone
HUser.Groups = ""
HUser.EnabledAccount = True
HUser.SuperUser = False
IF HAddUser(Myconn) = True THEN
ok += " = Usuario: "+User+" foi atribuido ao Banco de dados"
DbUserCreate = True
END
IF HModifyUser(Myconn,User) = True THEN
ok += " = Usuario: "+User+" foi atribuido ao Banco de dados"
DbUserCreate = True
END
HModifyServerRights(Myconn,Usermaster,hRightsChangePassword,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsChangeRights,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsCreateDB,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsDisconnectClient,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsManageServer,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsManageUser,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsPriority,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsReadLogStat,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsSeeUser,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsSendMessageToClient,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsServerReplication,hAllowed)
HModifyServerRights(Myconn,Usermaster,hRightsStopServer,hAllowed)
//user createdb
Rights is string = HInfoServerRights(Myconn,Usermaster,hRightsCreateDB)
HModifyServerRights(Myconn, User, hRightsCreateDB, Rights)
//diretivas admin do banco de dados
HModifyDatabaseRights(Myconn,Usermaster,hRightsCreateFile,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsRead,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsInsert,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsUpdate,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsDelete,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsDeleteDB,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsDeleteFile,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsBackup,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsManageTrigger,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsAutoModif,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsChangeLink,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsChangeOwner,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsChangeRights,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsConnection,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsCreateView,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsDebug,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsEncryptedConnection,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsLock,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsMaintenance,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsManageDuplicate,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsManageIntegrity,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsManageProcedure,hAllowed,Database)
// HModifyDatabaseRights(Myconn,Usermaster,hRightsManageTask,hAllowed,Database) // nao usa
HModifyDatabaseRights(Myconn,Usermaster,hRightsNoDatabaseAccess,hAllowed,Database)
HModifyDatabaseRights(Myconn,Usermaster,hRightsRunProcedure,hAllowed,Database)
//user diretivas sob o banco de dados
HModifyDatabaseRights(Myconn,User,hRightsCreateFile,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsRead,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsInsert,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsUpdate,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsDelete,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsDeleteDB,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsDeleteFile,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsBackup,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsManageTrigger,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsAutoModif,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsChangeLink,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsChangeOwner,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsChangeRights,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsConnection,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsCreateView,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsDebug,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsEncryptedConnection,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsLock,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsMaintenance,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsManageDuplicate,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsManageIntegrity,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsManageProcedure,hAllowed,Database)
// HModifyDatabaseRights(Myconn,User,hRightsManageTask,hAllowed,Database) // nao usa
HModifyDatabaseRights(Myconn,User,hRightsNoDatabaseAccess,hAllowed,Database)
HModifyDatabaseRights(Myconn,User,hRightsRunProcedure,hAllowed,Database)
ok += " 100%, Diretivas adicionadas com Sucesso!"
HCloseConnection(Myconn)
END
END
END
IF DbUserCreate = True
HOpenConnection(MyHfsqlLocal)
HChangeConnection("*",MyHfsqlLocal)
T001_Database.T001_Nome = Nome
T001_Database.T001_Email = Email
T001_Database.T001_Telefone = Telefone
T001_Database.T001_Database = Database
T001_Database.T001_DNSIP = DNS_Ip
T001_Database.T001_Porta = Porta
T001_Database.T001_User = User
T001_Database.T001_Senha = Password
T001_Database.T001_Cadastro = DateSys()+TimeSys()
HAdd(T001_Database)
HCloseConnection(MyHfsqlLocal)
END
END
arrResultado is array of string
Add(arrResultado,ok)
RESULT DbUserCreate