comp rleeocl // compilo un objeto solo
modi proj cmpges // compilo el ejecutable
Mi nombre es Sebastian Castriotta y este blog es un intento de tips de diferentes lenguajes de programación.
jueves, 15 de diciembre de 2011
viernes, 11 de noviembre de 2011
Hints en SQL server
Hints en SQL Server |
Escrito por Esteban Grinber |
Martes, 31 de Julio de 2007 21:00 |
Los hints en SQL Server (y en la mayoria de las bases de datos relaciones del mercado), son agregados a un comando SQL que indica que debe ejecutarse de manera diferente a la predeterminada por el motor. Existen 4 tipos de hints diferentes:
Hints en SQL ServerLos hints en SQL Server (y en la mayoria de las bases de datos relaciones del mercado), son agregados a un comando SQL que indica que debe ejecutarse de manera diferente a la predeterminada por el motor. Existen 4 tipos de hints diferentes:
Join Hints: HASH JOIN: Se utiliza cuando se quiere forzar el uso del HASH JOIN entre dos tablas. Ejemplo: SELECT title_id, pub_name, title FROM titles INNER HASH JOIN publishers ON titles.pub_id = publishers.pub_id MERGE JOIN: Se utiliza cuando se quiere forzar el uso del MERGE JOIN entre dos tablas. Ejemplo: SELECT title_id, pub_name, title FROM titles INNER MERGE JOIN publishers ON titles.pub_id = publishers.pub_id LOOP JOIN: Se utiliza cuando se quiere forzar el uso del LOOP JOIN entre dos tablas. Ejemplo: SELECT title_id, pub_name, title FROM titles INNER LOOP JOIN publishers ON titles.pub_id = publishers.pub_id Generalmente no deberiamos usar estos hints, pero si por alguna razon el motor no esta generando el plan de ejecucion mas optimo, entonces es valida esta metodologia. Pero hay que tener CUIDADO en usarlo. Index Hints: Este tipo de hints, se utiliza cuando queremos forzar el uso de un indice en particular, para optimizar la consulta. El plan de ejecucion generado por el SQL Server suele ser el mas optimo, pero en algunos casos excepcionales, no. Al igual que con los Join Hints, hay que tener cuidado a la hora de usarlos. Ejemplo para forzar un Table Scan: SELECT * FROM authors WITH (INDEX(0)) Poniendo como ID de INDEX, el valor 0, se fuerza un Table Scan. Ejemplo para forzar el uso del Clustered Index: SELECT * FROM authors WITH (INDEX(1)) Poniendo como ID de INDEX, el valor 1, se fuerza el uso del indice Clustered de la tabla. En caso de que no existe, tira error. Ejemplo para forzar el uso de un Non Clustered Index: SELECT * FROM authors WITH (INDEX(NOMBRE_DEL_INDICE)) Lock Hints: Por lejos, los mas usados. Este tipo de hints especifican que tipo de lockeo se debe efectuar en una operacion. Existen varios hints de este tipo, pero el mas usado es el NOLOCK y ROWLOCK. NOLOCK: (equivalente al READUNCOMMITTED): Se usa en la sentencia SELECT. Indica al motor que ignore los a lockeos exclusivos de datos y lea directamente de la tabla, lo que suele llamarse "lectura sucia". Con esto ganamos mayor performance y escalabilidad, pero al riesgo de leer datos de una transaccion que todavia no finalizo, lo que significa una perdida en la fiabilidad de los datos. Es un riesgo que tenemos que tener en cuenta. Por ejemplo, si queremos sacar un reporte de ventas entre dos periodos que ya terminaron, no tiene sentido realizar y verificar lockeos a la hora de leer, por lo cual un NOLOCK es totalmente valido. Pero si tenemos que leer datos entre periodos vigentes, donde pueden efectuarse transacciones, habria que evaluar el riesgo de leer datos que podrian llegar a ser invalidos. Algo importante que hay que aclarar, es que el NOLOCK no ignora TODOS los lockeos, de hecho, adquieren lockeos Sch-S (estabilidad del esquema). Por ejemplo, si se esta corriendo un comando DDL que afecte a la tabla, esta adquiere un lockeos Sch-M (modificación del esquema), y por lo tanto, si se ejecuta una consulta aun teniendo el hint NOLOCK, se bloqueara hasta que no termine la transaccion anterior. En muchos sitios que requieren alta disponibilidad, se suele usar este hint en practicamente todas las sentencias SELECT, salvo en aquellas donde se quiere garantizar la integridad de los datos. Ejemplo: SELECT COUNT(*) FROM Usuarios WITH (NOLOCK) INNER JOIN MenuUsuario WITH (NOLOCK) ON Usuarios.UsuarioID = MenuUsuario.UsuarioID ROWLOCK: Especifica que se apliquen bloqueos de fila cuando normalmente se aplicarían bloqueos de página o de tabla. Aplica solo a sentencias UPDATE, DELETE e INSERT. Tambien, como en el caso del NOLOCK, este hint sirve para ganar mayor performance en entornos muy concurrentes. Algo que hay que tener cuidado aca, es que si ocurren muchos update sobre la misma tabla, se puede saturar el servidor de tantos lockeos por fila Ejemplo: UPDATE Usuarios WITH (ROWLOCK) SET UsuarioID = 20 WHERE UsuarioID = 1 http://www.alejandrosueldo.com.ar/joomla15/index.php?option=com_content&view=article&id=33:hints-en-sql-server&catid=21:cursos-y-tutoriales&Itemid=2 |
martes, 27 de septiembre de 2011
SQL Triggers
ALTER TRIGGER [STK35].[OrdFsstkCntUpd]
ON [STK35].[ORDFS]
AFTER UPDATE
AS
declare @OrdFsStkCnt as decimal(12,2), @OrdfsIdPrd AS CHAR(18), @MSAG AS CHAR(100)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
select @OrdFsStkCnt=OrdFsStkCn, @OrdfsIdPrd =OrdfsIdPrd FROM inserted
SET @MSAG = 'UPD' + @OrdfsIdPrd + ' - ' + CAST(@OrdFsStkCnt AS CHAR)
INSERT INTO [dbo].[DebugTrigger]([sqltxt]) values (@MSAG )
END
ON [STK35].[ORDFS]
AFTER UPDATE
AS
declare @OrdFsStkCnt as decimal(12,2), @OrdfsIdPrd AS CHAR(18), @MSAG AS CHAR(100)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
select @OrdFsStkCnt=OrdFsStkCn, @OrdfsIdPrd =OrdfsIdPrd FROM inserted
SET @MSAG = 'UPD' + @OrdfsIdPrd + ' - ' + CAST(@OrdFsStkCnt AS CHAR)
INSERT INTO [dbo].[DebugTrigger]([sqltxt]) values (@MSAG )
END
viernes, 9 de septiembre de 2011
Genexus 9.0 - Visual Fox - Leer TXT
/*
&Archivo C(200)
&CntError n(10)
&Error c(100)
&i n(2)
&IdArchi n(10)
&Linea c(350)
*/
&Archivo='navegacion'
Call('gxSelFile',&Archivo ,'C:\scastriotta\KBS\GX90\UTL\DATA002','HTML' ,'Archivo' , , 0 )
DBase if file([!&Archivo!])
DBase [!&IdArchi!] = FOPEN([!&Archivo!],0)
If &IdArchi < 0
Msg('Error al leer el archivo.')
Else
DBase Store fseek([!&IdArchi!] ,0) to top
DBase Do WHILE .NOT. FEOF([!&IdArchi!])
DBase [!&Linea!] = FGETS([!&IdArchi!])
if
(StrSearch(&Linea,'Update on')>0) .or.
(StrSearch(&Linea,'Delete from')>0) .or.
(StrSearch(&Linea,'Insert into')>0)
Do Case
Case StrSearch(&Linea,'Update on')>0
&NavAcc = 'Update on'
Case StrSearch(&Linea,'Delete from')>0
&NavAcc = 'Delete from'
Case StrSearch(&Linea,'Insert into')>0
&NavAcc = 'Insert into'
EndCase
DBase [!&Linea!] = FGETS([!&IdArchi!])
DBase [!&Linea!] = FGETS([!&IdArchi!])
new
NavTable= &Linea
NavAcc = &NavAcc
endnew
endif
DBase EndDo
DBase fclose([!&IdArchi!] )
If &CntError = 0
Msg('El archivo se proceso correctamente')
Else
&Error = 'El archivo se proceso con errores(' + trim(str(&CntError )) + ')'
msg(&Error)
EndIf
EndIf
Dbase Else
Msg('Error al tratar de leer el archivo.')
Dbase Endif
&Archivo C(200)
&CntError n(10)
&Error c(100)
&i n(2)
&IdArchi n(10)
&Linea c(350)
*/
&Archivo='navegacion'
Call('gxSelFile',&Archivo ,'C:\scastriotta\KBS\GX90\UTL\DATA002','HTML' ,'Archivo' , , 0 )
DBase if file([!&Archivo!])
DBase [!&IdArchi!] = FOPEN([!&Archivo!],0)
If &IdArchi < 0
Msg('Error al leer el archivo.')
Else
DBase Store fseek([!&IdArchi!] ,0) to top
DBase Do WHILE .NOT. FEOF([!&IdArchi!])
DBase [!&Linea!] = FGETS([!&IdArchi!])
if
(StrSearch(&Linea,'Update on')>0) .or.
(StrSearch(&Linea,'Delete from')>0) .or.
(StrSearch(&Linea,'Insert into')>0)
Do Case
Case StrSearch(&Linea,'Update on')>0
&NavAcc = 'Update on'
Case StrSearch(&Linea,'Delete from')>0
&NavAcc = 'Delete from'
Case StrSearch(&Linea,'Insert into')>0
&NavAcc = 'Insert into'
EndCase
DBase [!&Linea!] = FGETS([!&IdArchi!])
DBase [!&Linea!] = FGETS([!&IdArchi!])
new
NavTable= &Linea
NavAcc = &NavAcc
endnew
endif
DBase EndDo
DBase fclose([!&IdArchi!] )
If &CntError = 0
Msg('El archivo se proceso correctamente')
Else
&Error = 'El archivo se proceso con errores(' + trim(str(&CntError )) + ')'
msg(&Error)
EndIf
EndIf
Dbase Else
Msg('Error al tratar de leer el archivo.')
Dbase Endif
jueves, 8 de septiembre de 2011
SQL ver tablas lockeadas
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
You can use
sp_lock
When reading sp_lock information, use the OBJECT_NAME( ) function to get the name of a table from its ID number, for example:
SELECT object_name(16003073)
EDIT :
There is another proc provided by microsoft which reports objects without the ID translation : http://support.microsoft.com/kb/q255596/
http://dev.mysql.com/doc/refman/5.0/es/lock-tables.html`
select
object_name(P.object_id) as TableName,
resource_type, resource_description
from
sys.dm_tran_locks L
join sys.partitions P on L.resource_associated_entity_id = p.hobt_id
http://msdn.microsoft.com/es-es/library/ms186301.aspx
SELECT OBJECT_NAME(23007163)
sp_who2
sp_who http://msdn.microsoft.com/es-es/library/ms174313.aspx
sp_lock
You can use
sp_lock
(and sp_lock2
), but in SQL Server 2005 onwards this is being deprecated in favour of querying sys.dm_tran_locks
:select
object_name(P.object_id) as TableName,
resource_type, resource_description
from
sys.dm_tran_locks L
join sys.partitions P on L.resource_associated_entity_id = p.hobt_id
sp_lock
When reading sp_lock information, use the OBJECT_NAME( ) function to get the name of a table from its ID number, for example:
SELECT object_name(16003073)
EDIT :
There is another proc provided by microsoft which reports objects without the ID translation : http://support.microsoft.com/kb/q255596/
http://dev.mysql.com/doc/refman/5.0/es/lock-tables.html`
select
object_name(P.object_id) as TableName,
resource_type, resource_description
from
sys.dm_tran_locks L
join sys.partitions P on L.resource_associated_entity_id = p.hobt_id
http://msdn.microsoft.com/es-es/library/ms186301.aspx
SELECT OBJECT_NAME(23007163)
sp_who2
sp_who http://msdn.microsoft.com/es-es/library/ms174313.aspx
sp_lock
viernes, 19 de agosto de 2011
Genexus - Tablas Temporales
Para poder utilizarlas este tipo de tablas en
GeneXus se debe tener por un lado un DataView en donde la tabla por ejemplo
llamada internamente en GeneXus 'MiTemporal' tenga asociado el nombre externo
'#MiTemporal' esto nos permitirá utilizar el carácter '#' que dentro de GeneXus
no esta permitido. Por otro lado antes de acceder a esta tabla es necesario
ejecutar un comando de 'create' con una sentencia SQL, por ejemplo
SQL CREATE TABLE [#MiTemporal] ...
Esto creara la tabla temporal en la base y luego el resto de los programas GeneXus accederán a esta tabla sin diferenciarla de cualquier otra.
SQL CREATE TABLE [#MiTemporal] ...
Esto creara la tabla temporal en la base y luego el resto de los programas GeneXus accederán a esta tabla sin diferenciarla de cualquier otra.
Genexus - SQL External Stores Procedures
List of external stored procedures : SelecProducIns SelecProducDel
Si son de in o out siempre poner output out
CREATE PROCEDURE [dbo].[SelecProducIns]
@ProdCod int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
INSERT INTO [dbo].[PRODSELEC]([SelProCod])
SELECT [ProdCod] FROM [dbo].[PRODUCTOS] where ProdCod=@ProdCod
COMMIT TRANSACTION
END
CREATE PROCEDURE [dbo].[SelecProducDel]
@ProdCod int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
delete FROM [dbo].[PRODSELEC] where SelProCod=@ProdCod
COMMIT TRANSACTION
END
//////////////////////////////////////////
extprog.ini en la razi de la kb
Si son de in o out siempre poner output out
[SelecProducIns]
ProgramType=StoredProcedure
ProgramName=SelecProducIns
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod
[SelecProducDel]
ProgramType=StoredProcedure
ProgramName=SelecProducDel
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod
////////////////////////////////////////
CALL('SelecProducIns', &ProdCod)
CALL('SelecProducDel', &ProdCod)
Si son de in o out siempre poner output out
CREATE PROCEDURE [dbo].[SelecProducIns]
@ProdCod int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
INSERT INTO [dbo].[PRODSELEC]([SelProCod])
SELECT [ProdCod] FROM [dbo].[PRODUCTOS] where ProdCod=@ProdCod
COMMIT TRANSACTION
END
CREATE PROCEDURE [dbo].[SelecProducDel]
@ProdCod int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
delete FROM [dbo].[PRODSELEC] where SelProCod=@ProdCod
COMMIT TRANSACTION
END
//////////////////////////////////////////
extprog.ini en la razi de la kb
Si son de in o out siempre poner output out
[SelecProducIns]
ProgramType=StoredProcedure
ProgramName=SelecProducIns
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod
[SelecProducDel]
ProgramType=StoredProcedure
ProgramName=SelecProducDel
ParmMode=out
ParmType=Number,4,0;
ParmName=ProdCod
////////////////////////////////////////
CALL('SelecProducIns', &ProdCod)
CALL('SelecProducDel', &ProdCod)
miércoles, 27 de julio de 2011
Frases
"El sabio no habla, los talentosos hablan, y los estúpidos discuten".
Una organización que mantiene a un mal jefe no puede pretender que la cultura corporativa sea una y la de esa persona otra, porque en última instancia, en la instancia cotidiana, prevalecerá la del jefe inmediato a quien el empleado ve y oye todos los días. Un buen jefe puede torcer una decisión ya tomada de irse de una organización.
lunes, 25 de julio de 2011
Genexus GXPublic Filtrar Fechas
Description : Como filtrar fecha en tablas Gxpublic | |||||||||||||||||||
| |||||||||||||||||||
|
viernes, 22 de julio de 2011
Problema con router Linksys WRT120N
Resetting the Linksys router to factory default
http://www6.nohold.net/Cisco2/ukp.aspx?pid=80&login=1&app=search&vw=1&articleid=4008
Upgrading the Linksys router's firmware
jueves, 21 de julio de 2011
Genexus - Acceder a la KB
Hasta la version 9 se utiliza GXPublic
Luego
.Net Data Provider for GeneXus Rocha
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?.Net+Data+Provider+for+GeneXus+Rocha,
Tus programas con Key de seguridad
Codigo Visual Basic
Private Sub Command1_Click()
Dim objs
Dim obj
Dim WMI
Dim strMBD
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
strMBD = "MotherBoard Number: " & obj.SerialNumber
Next
Label1.Caption = strMBD
End Sub
Private Sub Command1_Click()
Dim objs
Dim obj
Dim WMI
Dim strMBD
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
strMBD = "MotherBoard Number: " & obj.SerialNumber
Next
Label1.Caption = strMBD
End Sub
sábado, 16 de julio de 2011
viernes, 15 de julio de 2011
jueves, 14 de julio de 2011
BLogs y demas con info de Genexus
http://training.genexus.com/page.aspx?172,1,3,O,S,0,,
http://genexus.fabriciodelossantos.com/category/net/
http://genexus.fabriciodelossantos.com/category/net/
Consumir web service con SSL y autenticación
http://mcrispino.wordpress.com/2008/10/03/consumir-web-service-con-ssl-y-autenticacion-2/
Converting a KB From GeneXus 9.0 (or prior) To GeneXus X / X Evolution 1
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Converting+a+KB+From+GeneXus+9.0+%28or+prior%29+To+GeneXus+X+%2F+X+Evolution+1,
Converting a KB From GeneXus 9.0 (or prior) To GeneXus X / X Evolution 1
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Converting+a+KB+From+GeneXus+9.0+%28or+prior%29+To+GeneXus+X+%2F+X+Evolution+1,
KBSynchro: Comparacion de Objetos de dos Knowledge base GeneXus
http://ealmeida.blogspot.com/2008/06/kbsynchro-comparacion-de-objetos-de-dos.html
Tools y +
http://mcrispino.wordpress.com/category/genexus/page/4/
http://blog.marcoscrispino.com/2007/12/kbquery-ejecucin-de-consultas-sql-en.html
http://www.concepto.com.uy/gxpsites/page.aspx?1,3,33,O,S,0,MNU;E;3;3;MNU;
Tools y +
http://mcrispino.wordpress.com/category/genexus/page/4/
http://blog.marcoscrispino.com/2007/12/kbquery-ejecucin-de-consultas-sql-en.html
http://www.concepto.com.uy/gxpsites/page.aspx?1,3,33,O,S,0,MNU;E;3;3;MNU;
miércoles, 13 de julio de 2011
SMTP para gmail
&smtpsession.Host = 'smtp.gmail.com'
&smtpsession.Port = 465
&smtpsession.UserName = 'torrilux@gmail.com'
&smtpsession.Password = 'xxxxxxxxx'
&smtpsession.Authentication = 1
&smtpsession.Secure = 1
&message.Subject = 'Prueba '
&message.From.Address = 'torrilux@gmail.com'
&message.From.Name = 'Jose Torres'
&message.To.New( 'LeandroG' , 'leandrominatel@gmail.com' )
&message.CC.New( 'LeandroH' , 'leandrominatel@hotmail.com' )
&smtpsession.Login( )
&smtpsession.Send( &message )
msg( &smtpsession.ErrDescription )
&smtpsession.Port = 465
&smtpsession.UserName = 'torrilux@gmail.com'
&smtpsession.Password = 'xxxxxxxxx'
&smtpsession.Authentication = 1
&smtpsession.Secure = 1
&message.Subject = 'Prueba '
&message.From.Address = 'torrilux@gmail.com'
&message.From.Name = 'Jose Torres'
&message.To.New( 'LeandroG' , 'leandrominatel@gmail.com' )
&message.CC.New( 'LeandroH' , 'leandrominatel@hotmail.com' )
&smtpsession.Login( )
&smtpsession.Send( &message )
msg( &smtpsession.ErrDescription )
Genexus Errores - Class not registered
Abstract | ||
Puede ocurrir el Error "class not registered" "Clase no registrada" en varios casos al querer usar funcionalidades de GeneXus y lo que debe hacerse es registrar la clase que corresponda con el comando REGASM desde el prompt de DOS. | ||
Descripción Detallada | ||
Nota: Ejecutar el comando desde la ventana RUN de Windows NO es efectivo. Algunos casos son: 1) Al intentar abrir el editor de temas. Solución: Ejecutar C:\<WINNT>\Microsoft.NET\Framework\<v1.1.4322>\regasm c:\<gx80>\gxthemeeditor.exe 2) Al crear un nuevo modelo con el Wizard. C:\<WINNT>\Microsoft.NET\Framework\<v1.1.4322>\regasm c:\<gx80>\WizardNewModel.exe 3) Al ejecutar el WSDL inspector Solución: Ejecutar el comando: C:\<WINNT>\Microsoft.NET\Framework\<v1.1.4322>\regasm c:\<gx80>\GXWSDLInspector.exe Notas: 1. En el caso del editor de temas la causa puede ser también que falte copiar en el <windows>\system32 los archivos mfc7X.dll y msvcr7X.dll. (Estas dos DLL son instaladas por el .NET Framework SDK o Visual Studio .NET -el SDK no es requerimiento ya que dichas DLL se pueden distribuir). 2. Utilizar siempre el framework más nuevo, registrar con el regasm de la versión más nueva, en el ejemplo "v1.1.4322" 3. En caso de utilizar una versión superior a la 8.0, colocar el path de la versión correspondiente para registrar el editor de temas. 4. Si puede ejecutar el wizard en forma independiente, desde el explorador de Windows, es porque está levantando correctamente el framework 1.1. Es posible indicarle la versión del framework que se utiliza para llamar a los utilitarios dentro de GX (con Interop). Para esto definir un archivo Gxw32.Exe.Config (en el directorio de instalación de GeneXus) que contenga: <?xml version ="1.0"?> <configuration> <startup> <supportedRuntime version="v1.1.4322" /> </startup> </configuration> Por más información: http://msdn2.microsoft.com/en-us/library/9w519wzk(VS.80).aspx - Explica cómo configurar el <app>.config para especificar el framework. http://msdn2.microsoft.com/en-us/library/ms994381.aspx - Explica el por qué al ejecutar uno de los aplicativos .NET nuestros se levanta el framework correcto, pero cuando se hace a través de GX (interop) se levanta el último instalado. Para usuarios con Windows Vista, o superior es requerimiento ejecutar los comando con la opción "Run as Administrator". |
Genexus Errores Tips
c:\<WinDir>\Microsoft.net\framework\v2.0.50727\regasm.exe F:\ARCHIV~1\....\GXThemeEditor.exe
<path GX>\WizardNewModel.exe
<path GX>\GXWSDLInspector.exe
IIS
Agregar Sitio Web services
Propiedades
ASP .NET Version
Error Failed to access IIS metabase
%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe –i
WRN: Assembly binding logging is turned OFF.
ESPECIFICAR TODO
GeneXus Fast Access Message: [Microsoft][SQL Server Native Client 10.0]Dialog failed
Mdac 2.7
ejecuta el Rbld, este te reconstruye la base de conocimiento sin cambiarte nada,
ve al DOS te pocisionas en tu base de conocimento, es decir, c:\mimodelo, luego.
c:\mimodelo c:\gxw75\rbld -y.
ve al DOS te pocisionas en tu base de conocimento, es decir, c:\mimodelo, luego.
c:\mimodelo c:\gxw75\rbld -y.
Usuario SQL GEX
USE [master]
GO
CREATE LOGIN [GEX] WITH PASSWORD=N'gexxeg' , DEFAULT_DATABASE=[TEST1], DEFAULT_LANGUAGE=[Español], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
USE [TEST1]
GO
CREATE USER [GEX] FOR LOGIN [GEX]
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_accessadmin', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_backupoperator', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_datareader', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_datawriter', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_ddladmin', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_denydatareader', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_denydatawriter', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_owner', N'GEX'
GO
USE [TEST1]
GO
EXEC sp_addrolemember N'db_securityadmin', N'GEX'
GO
A connection was successfully established , but then an error ocurred during login process
Connection Error: (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe
Reiniciar SQLServer
El usuario no esta asociado a una conexion SQL server de confianza
Esto es porque existen dos tipos de autentificación de cuentas una es con cuentas de Windows y la otra es Mixta (Windows y SQL), para corregirlo tenemos que abrir SQL Server y en el servidor vamos a Propiedades, en la pestaña de Security dentro de Authentication elegimos SQL Server and Windows.
][SQL Native Client]Error al asignar memoria
martes, 12 de julio de 2011
Visual Basic 6 - Rutinas - Coneccion
'Base de datos
Public Wks As DAO.Workspace
Dim db As DAO.Database
Public Rs As DAO.Recordset
Public sql As String
Public Function Conn(sql As String)
Set Wks = DBEngine.Workspaces(0)
Set db = Wks.OpenDatabase(Principal.UbicBD & "\BaseDatos.mdb", False, False, ";User=Admin;Pwd=xxxx")
Set Rs = db.OpenRecordset(sql)
End Function
Public Function ConnSnap(sql As String)
Set Wks = DBEngine.Workspaces(0)
Set db = Wks.OpenDatabase(Principal.UbicBD & "\BaseDatos.mdb", False, False, ";User=Admin;Pwd=xxxx")
Set Rs = db.OpenRecordset(sql, dbOpenSnapshot)
End Function
Public Function ConnFin()
Rs.Close
Set Rs = Nothing
db.Close
Set db = Nothing
Wks.Close
Set Wks = Nothing
End Function
Public Wks As DAO.Workspace
Dim db As DAO.Database
Public Rs As DAO.Recordset
Public sql As String
Public Function Conn(sql As String)
Set Wks = DBEngine.Workspaces(0)
Set db = Wks.OpenDatabase(Principal.UbicBD & "\BaseDatos.mdb", False, False, ";User=Admin;Pwd=xxxx")
Set Rs = db.OpenRecordset(sql)
End Function
Public Function ConnSnap(sql As String)
Set Wks = DBEngine.Workspaces(0)
Set db = Wks.OpenDatabase(Principal.UbicBD & "\BaseDatos.mdb", False, False, ";User=Admin;Pwd=xxxx")
Set Rs = db.OpenRecordset(sql, dbOpenSnapshot)
End Function
Public Function ConnFin()
Rs.Close
Set Rs = Nothing
db.Close
Set db = Nothing
Wks.Close
Set Wks = Nothing
End Function
viernes, 1 de julio de 2011
Consideraciones de seguridad para una instalación de SQL Server
Consideraciones de seguridad para una instalación de SQL Server
La seguridad resulta importante, no sólo para Microsoft SQL Server y Microsoft, sino también para todos los productos y empresas. Si aplica las siguientes prácticas recomendadas de seguridad, puede evitar muchas vulnerabilidades de seguridad. En este tema se tratan algunas prácticas recomendadas de seguridad que debe utilizar antes y después de instalar SQL Server. En los temas de referencia para estas características se incluyen directrices de seguridad para características específicas.
http://msdn.microsoft.com/es-es/library/ms144228(v=sql.90).aspx
Siga estas prácticas recomendadas cuando configure el entorno del servidor.
- Mejorar la seguridad física
- Usar firewalls
- Aislar servicios
- Crear cuentas de servicio con privilegios mínimos
- Deshabilitar NetBIOS y Bloque de mensajes de servidor
Mejorar la seguridad física
El aislamiento físico y lógico constituye la base de la seguridad de SQL Server. Para mejorar la seguridad física de la instalación de SQL Server, realice las siguientes tareas:
- Coloque el servidor en una sala inaccesible para personas no autorizadas.
- Coloque los equipos que alojan bases de datos en una ubicación protegida físicamente, como una sala de equipos cerrada con sistemas supervisados de detección de inundaciones y de extinción o detección de incendios.
- Instale las bases de datos en una zona segura de la intranet corporativa que nunca esté conectada directamente a Internet.
- Realice periódicamente una copia de seguridad de los datos y almacene las copias en una ubicación segura fuera de las instalaciones.
Usar firewalls
Los firewalls son fundamentales para garantizar la seguridad de la instalación de SQL Server. Los firewalls serán más efectivos si sigue estas instrucciones:
- Instale un firewall entre el servidor e Internet.
- Divida la red en zonas de seguridad separadas por firewalls. Bloquee todo el tráfico y, a continuación, admita sólo el necesario.
- En un entorno de varios niveles, utilice varios firewalls para crear subredes filtradas.
- Si instala el servidor en un dominio de Windows, configure firewalls internos para permitir la autenticación de Windows.
- En un dominio de Windows en el que todas las versiones de Windows son Windows XP o Windows Server 2003 o versiones posteriores, deshabilite la autenticación NTLM. .
- Si la aplicación utiliza transacciones distribuidas, debe configurar el firewall para permitir que el tráfico del Coordinador de transacciones distribuidas de Microsoft (MS DTC) fluya entre instancias independientes de MS DTC y entre MS DTC y administradores de recursos como SQL Server.
Aislar servicios
El aislamiento de servicios reduce el riesgo de que se utilice un servicio cuya seguridad se haya vulnerado para vulnerar la seguridad de otros servicios. Para aislar los servicios, siga estas instrucciones:
- Siempre que sea posible, no instale SQL Server en un controlador de dominio.
- Ejecute los servicios de SQL Server por separado en distintas cuentas de Windows.
- En un entorno de varios niveles, ejecute la lógica Web y la lógica de negocios en equipos independientes.
Crear cuentas de servicio con privilegios mínimos
La instalación de SQL Server configura automáticamente las cuentas de servicio con los permisos necesarios para SQL Server. Cuando se modifican o se configuran los servicios de Windows utilizados por SQL Server 2005, sólo debería otorgar los permisos que precisan. Para obtener más información, vea Configurar cuentas de servicio de Windows.
Deshabilitar NetBIOS y Bloque de mensajes de servidor
Los servidores de la red perimetral deberían tener los protocolos innecesarios deshabilitados, incluido NetBIOS y Bloque de mensajes de servidor (SMB).
NetBIOS utiliza los siguientes puertos:
NetBIOS utiliza los siguientes puertos:
- UDP/137 (servicio de nombre NetBIOS)
- UDP/138 (servicio de datagrama NetBIOS)
- TCP/139 (servicio de sesión NetBIOS)
- TCP/139
- TCP/445
Tras la instalación, puede mejorar la seguridad de la instalación de SQL Server si sigue estas prácticas recomendadas relativas a las cuentas y los modos de autenticación:
Cuentas de servicio
- Ejecute servicios de SQL Server con los privilegios mínimos.
- Asocie los servicios de SQL Server con cuentas de Windows.
Modo de autenticación
- Requiera la autenticación de Windows para las conexiones a SQL Server.
Contraseñas seguras
- Asigne una contraseña segura a la cuenta sa.
- Habilite siempre la comprobación de directivas de contraseñas.
- Utilice contraseñas seguras en todos los inicios de sesión de SQL Server.
Suscribirse a:
Entradas (Atom)