Archivo categoría SQL Server

Cómo darle formato a una fecha en SQL Server

Para desplegar una fecha mostrando el formato utilizado en Latinoamérica, utiliza la siguiente instrucción:

SQL:
  1. SELECT CONVERT(VARCHAR(10), TuTabla.Fecha, 103) FROM TuTabla

La fecha será desplegada en el formato dd/mm/aaaa, por ejemplo 15/06/2010 para el 15 de junio de 2010.

Puedes encontrar la lista completa de los formatos en esta página.

No hay Comentarios

Exclusive access could not be obtained because the database is in use

Intentas restaurar una base de datos desde un backup utilizando Microsoft SQL Server Management Studio y te aparece el siguiente error:

Restore failed for Server 'TuServidor'.  (Microsoft.SqlServer.SmoExtended)

System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.Smo)

Lo que ocurre es que la base de datos está abierta por otro proceso y debes cerrar todas las conexiones. Para hacerlo, abre una ventana de Query y coloca lo siguiente:

SQL:
  1. USE master
  2. go
  3. ALTER DATABASE nombre_de_tu_base_de_datos SET single_user WITH rollback immediate
  4. ALTER DATABASE nombre_de_tu_base_de_datos SET multi_user

Este script fue tomado de un excelente post escrito por Sergio Tarrillo, en el cual puedes encontrar soluciones adicionales para este problema.

No hay Comentarios

Saving changes is not permitted en SQL Server

Trabajando en una instalación limpia de SQL Server 2008, si intentas modificar la estructura de una tabla, puedes encontrarte este error al intentarla guardar:

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.

saving-not-permitted

Si oprimes Cancel, no se guarda ningún cambio.

La solución es muy sencilla, abre Microsoft SQL Server Management Studio y haz clic en el menú Tools, y luego en Options.

Después en la columna izquierda selecciona Designers y desmarca la casilla Prevent saving changes that require table re-creation.

prevent

Y listo, ahora podrás modificar tu tabla y guardar los cambios.

No hay Comentarios

User, group, or role already exists in the current database.

Seguramente te ha pasado que al migrar una base de datos de SQL Server de un servidor a otro, haces tu backup usando Microsoft SQL Server Management Studio, transfieres el archivo, y haces el restore en el nuevo servidor. Todo parece perfecto, pero cuando vas a crear tu usuario obtienes el siguiente error:

error1

User, group, or role '' already exists in the current database. (Microsoft SQL Server, Error: 15023)

Entonces expandes tu base de datos, vas al nodo Security -> Users ->, buscas el usuario, y lo intentas borrar, pero entonces aparece otro error:

error2

Drop failed for User ''. (Microsoft.SqlServer.Smo). The database principal owns a database role and cannot be dropped. (Microsoft SQL Server, Error: 15421)

En este punto te das cuenta de que el usuario está "huérfano" (orphaned), y una solución para darle la vuelta al problema es crear un nuevo usuario con otro nombre, asignarlo a la base de datos, y modificar el nombre del usuario en el Connection String de tu aplicación.

Pero existe una manera de solucionar las cosas correcta y fácilmente.

Abre una ventana de query en tu base de datos y teclea lo siguiente para ver los usuarios huérfanos:

SQL:
  1. EXEC sp_change_users_login 'Report'

Si ves a tu usuario ahí significa que efectivamente está huérfano y para deshuerfanizarlo ;) teclea lo siguiente:

SQL:
  1. EXEC sp_change_users_login 'Auto_Fix', 'user'

Modificando user por el nombre de tu usuario.

Y listo, asunto totalmente solucionado, no tienes que crear nuevos usuarios ni modificar las Connection Strings de tus aplicaciones.

Por último, si quieres crear un nuevo usuario para esta base de datos, usa:

SQL:
  1. EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

Referencia: Stupid Programmer.

No hay Comentarios

Palabras reservadas de SQL Server 2005

Las siguientes palabras son palabras reservadas (Reserved Keywords) para SQL Server 2005. Si vas a crear una tabla, columna, o algún otro elemento en tu base de datos, trata de no utilizar alguna de las siguientes palabras. Si por alguna razón lo haces, deberás utilizar los delimitadores "[" y "]" en tus sentencias.

Por ejemplo, si creas una tabla llamada Abort utilízala como sigue:

SQL:
  1. SELECT * FROM [Abort]

De lo contrario, generarás un error.

Las palabras reservadas son:

A
ABORT
ABS
ABSOLUTE
ACCESS
ACOS
ACQUIRE
ACTION
ACTIVATE
ADA
ADD
ADDFORM
ADMIN
AFTER
AGGREGATE
ALIAS
ALL
ALLOCATE
ALTER
AN
ANALYZE
AND
ANY
APPEND
ARCHIVE
ARCHIVELOG
ARE
ARRAY
ARRAYLEN
AS
ASC
ASCII
ASIN
ASSERTION
AT
ATAN
AUDIT
AUTHORIZATION
AVG
AVGU
BACKUP
BECOME
BEFORE
BEGIN
BETWEEN
BIGINT
BINARY
BIND
BINDING
BIT
BLOB
BLOCK
BODY
BOOLEAN
BOTH
BREADTH
BREAK
BREAKDISPLAY
BROWSE
BUFFERPOOL
BULK
BY
BYREF
CACHE
CALL
CALLPROC
CANCEL
CAPTURE
CASCADE
CASCADED
CASE
CAST
CATALOG
CCSID
CEILING
CHANGE
CHAR
CHARACTER
CHARTOROWID
CHECK
CLASS
CLOB
CHECKPOINT
CHR
CLEANUP
CLEAR
CLEARROW
CLOSE
CLUSTER
CLUSTERED
COALESCE
COBOL
COLGROUP
COLLATE
COLLATION
COLLECTION
COLUMN
COMMAND
COMMENT
COMMIT
COMPLETION
COMMITTED
COMPILE
COMPLEX
COMPRESS
COMPUTE
CONCAT
CONFIRM
CONNECT
CONNECTION
CONSTRAINT
CONSTRAINTS
CONSTRUCTOR
CONTAINS
CONTAINSTABLE
CONTENTS
CONTINUE
CONTROLFILE
CONTROLROW
CONVERT
COPY
CORRESPONDING
COS
COUNT
COUNTU
CREATE
CROSS
CUBE
CURRENT
CURRENT_DATE
CURRENT_PATH
CURRENT_ROLE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
CVAR
CYCLE
DATA
DATABASE
DATAFILE
DATAHANDLER
DATAPAGES
DATE
DAY
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
DAYS
DBA
DBCC
DBSPACE
DEALLOCATE
DEC
DECIMAL
DECLARATION
DECLARE
DECODE
DEFAULT
DEFERRABLE
DEFERRED
DEFINE
DEFINITION
DEGREES
DELETE
DEPTH
DEREF
DELETEROW
DENY
DESC
DESCRIBE
DESCRIPTOR
DESTROY
DHTYPE
DESTRUCTOR
DETERMINISTIC
DICTIONARY
DIAGNOSTICS
DIRECT
DISABLE
DISCONNECT
DISK
DISMOUNT
DISPLAY
DISTINCT
DISTRIBUTE
DISTRIBUTED
DO
DOMAIN
DOUBLE
DOWN
DROP
DUMMY
DUMP
DYNAMIC
EACH
EDITPROC
ELSE
ELSEIF
ENABLE
END
ENDDATA
ENDDISPLAY
ENDEXEC
END-EXEC
ENDFORMS
ENDIF
ENDLOOP
EQUALS
ENDSELECT
ENDWHILE
ERASE
ERRLVL
ERROREXIT
ESCAPE
EVENTS
EVERY
EXCEPT
EXCEPTION
EXCEPTIONS
EXCLUDE
EXCLUDING
EXCLUSIVE
EXEC
EXECUTE
EXISTS
EXIT
EXP
EXPLAIN
EXPLICIT
EXTENT
EXTERNAL
EXTERNALLY
EXTRACT
FALSE
FETCH
FIELD
FIELDPROC
FILE
FILLFACTOR
FINALIZE
FINALIZE
FIRST
FLOAT
FLOOR
FLOPPY
FLUSH
FOR
FORCE
FORMDATA
FORMINIT
FORMS
FORTRAN
FOREIGN
FOUND
FREELIST
FREELISTS
FREETEXT
FREETEXTTABLE
FROM
FREE
FULL
FUNCTION
GENERAL
GET
GETCURRENTCONNECTION
GETFORM
GETOPER
GETROW
GLOBAL
GO
GOTO
GRANT
GRANTED
GRAPHIC
GREATEST
GROUP
GROUPING
GROUPS
HASH
HAVING
HOST
HELP
HELPFILE
HOLDLOCK
HOUR
HOURS
IDENTIFIED
IDENTITY
IGNORE
IDENTITYCOL
IF
IFNULL
IIMESSAGE
IIPRINTF
IMMEDIATE
IMPORT
IN
INCLUDE
INCLUDING
INCREMENT
INDEX
INDEXPAGES
INDICATOR
INITCAP
INITIAL
INITIALIZE
INITIALLY
INITRANS
INITTABLE
INNER
INOUT
INPUT
INSENSITIVE
INSERT
INSERTROW
INSTANCE
INSTR
INT
INTEGER
INTEGRITY
INTERFACE
INTERSECT
INTERVAL
INTO
IS
ISOLATION
ITERATE
JOIN
KEY
KILL
LABEL
LANGUAGE
LARGE
LAST
LATERAL
LAYER
LEADING
LEAST
LEFT
LESS
LENGTH
LEVEL
LIKE
LIMIT
LINENO
LINK
LIST
LISTS
LOAD
LOADTABLE
LOCAL
LOCALTIME
LOCALTIMESTAMP
LOCATOR
LOCATE
LOCK
LOCKSIZE
LOG
LOGFILE
LONG
LONGINT
LOWER
LPAD
LTRIM
LVARBINARY
LVARCHAR
MAIN
MANAGE
MANUAL
MAP
MATCH
MAX
MAXDATAFILES
MAXEXTENTS
MAXINSTANCES
MAXLOGFILES
MAXLOGHISTORY
MAXLOGMEMBERS
MAXTRANS
MAXVALUE
MENUITEM
MESSAGE
MICROSECOND
MICROSECONDS
MIN
MINEXTENTS
MINUS
MINUTE
MODIFIES
MINUTES
MINVALUE
MIRROREXIT
MOD
MODE
MODIFY
MODULE
MONEY
MONTH
MONTHS
MOUNT
MOVE
NAMED
NAMES
NATIONAL
NATURAL
NCHAR
NCLOB
NEW
NEXT
NHEADER
NO
NOARCHIVELOG
NOAUDIT
NOCACHE
NOCHECK
NOCOMPRESS
NOCYCLE
NOECHO
NOMAXVALUE
NOMINVALUE
NONCLUSTERED
NONE
NOORDER
NORESETLOGS
NORMAL
NOSORT
NOT
NOTFOUND
NOTRIM
NOWAIT
NULL
NULLIF
NULLVALUE
NUMBER
NUMERIC
OBJECT
NUMPARTS
NVL
OBID
ODBCINFO
OF
OFF
OFFLINE
OFFSETS
OLD
ON
ONCE
ONLINE
ONLY
OPEN
OPERATION
OPENDATASOURCE
OPENQUERY
OPENROWSET
OPTIMAL
OPTIMIZE
OPTION
OR
ORDER
ORDINALITY
OUT
OUTER
OUTPUT
OVER
OVERLAPS
OWN
PACKAGE
PAD
PARAMETER
PARAMETERS
PAGE
PAGES
PARALLEL
PART
PARTIAL
PATH
POSTFIX
PASCAL
PCTFREE
PCTINCREASE
PCTINDEX
PCTUSED
PERCENT
PERM
PERMANENT
PERMIT
PI
PIPE
PLAN
PLI
POSITION
POWER
PRECISION
PREFIX
PREORDER
PREPARE
PRESERVE
PRIMARY
PRINT
PRINTSCREEN
PRIOR
PRIQTY
PRIVATE
PRIVILEGES
PROC
PROCEDURE
PROCESSEXIT
PROFILE
PROGRAM
PROMPT
PUBLIC
PUTFORM
PUTOPER
PUTROW
QUALIFICATION
QUARTER
QUOTA
RADIANS
RAISE
RAISERROR
RAND
RANGE
RAW
READ
READS
READTEXT
REAL
RECURSIVE
REF
RECONFIGURE
RECORD
RECOVER
REDISPLAY
REFERENCES
REFERENCING
RELATIVE
REGISTER
RELEASE
RELOCATE
REMOVE
RENAME
REPEAT
REPEATABLE
REPEATED
REPLACE
REPLICATE
REPLICATION
RESET
RESETLOGS
RESOURCE
RESTORE
RESTRICT
RESULT
RESTRICTED
RESUME
RETRIEVE
RETURN
RETURNS
REUSE
REVOKE
RIGHT
ROLE
ROLES
ROLLBACK
ROLLUP
ROUTINE
ROW
ROWS
ROWCOUNT
ROWGUIDCOL
ROWID
ROWIDTOCHAR
ROWLABEL
ROWNUM
ROWS
RPAD
RRN
RTRIM
RULE
RUN
RUNTIMESTATISTICS
SAVE
SAVEPOINT
SCHEDULE
SCHEMA
SCN
SCREEN
SCROLL
SCOPE
SEARCH
SCROLLDOWN
SCROLLUP
SECOND
SECONDS
SECQTY
SECTION
SEGMENT
SELECT
SEQUENCE
SERIALIZABLE
SERVICE
SESSION
SESSION_USER
SET
SETS
SETUSER
SIN
SIMPLE
SIGN
SHUTDOWN
SHORT
SHARE
SHARED
SETUSER
SIZE
SLEEP
SMALLINT
SNAPSHOT
SOME
SORT
SOUNDEX
SPACE
SPECIFIC
SPECIFICTYPE
SQL
SQLEXCEPTION
SQLBUF
SQLCA
SQLCODE
SQLERROR
SQLSTATE
SQLWARNING
SQRT
START
STATE
STATEMENT
STATIC
STRUCTURE
STATISTICS
STOGROUP
STOP
STORAGE
STORPOOL
SUBMENU
SUBPAGES
SUBSTR
SUBSTRING
SUCCESSFUL
SUFFIX
SUM
SYSTEM_USER
SUMU
SWITCH
SYNONYM
SYSCAT
SYSDATE
SYSFUN
SYSIBM
SYSSTAT
SYSTEM
SYSTIME
SYSTIMESTAMP
TABLE
TABLEDATA
TABLES
TABLESPACE
TAN
TAPE
TEMP
TEMPORARY
TERMINATE
THAN
TEXTSIZE
THEN
THREAD
TIME
TIMEOUT
TIMESTAMP
TIMEZONE_HOUR
TIMEZONE_MINUTE
TINYINT
TO
TOP
TPE
TRACING
TRAILING
TRAN
TRANSACTION
TRANSLATE
TRANSLATION
TREAT
TRIGGER
TRIGGERS
TRIM
TRUE
TRUNCATE
TSEQUAL
TYPE
UID
UNCOMMITTED
UNDER
UNION
UNIQUE
UNKNOWN
UNNEST
UNLIMITED
UNLOADTABLE
UNSIGNED
UNTIL
UP
UPDATE
UPDATETEXT
UPPER
USAGE
USE
USER
USING
UUID
VALIDATE
VALIDPROC
VALIDROW
VALUE
VALUES
VARBINARY
VARCHAR
VARIABLE
VARIABLES
VARYING
VCAT
VERSION
VIEW
VOLUMES
WAITFOR
WEEK
WHEN
WHENEVER
WHERE
WHILE
WITH
WITHOUT
WORK
WRITE
WRITETEXT
YEAR
YEARS
ZONE

2 Comentarios

Cómo restablecer el valor de una columna Identity en SQL Server

Las columnas marcadas como Identity en SQL Server van incrementando de acuerdo a una seed o semilla. Normalmente empiezan en 1 y van incrementando de 1 en 1. Si has insertado, por ejemplo, 20 registros, el valor del Identity será 21. Si eliminas todos los registros e insertas uno nuevo, verás que en vez de empezar nuevamente del 1, continuará en el 21.

Hay ocasiones en las que necesitamos que el Identity vuelva a empezar en 1. Para esto, se necesita restablecer la semilla, lo cual se llama reseed.

Todos los procedimientos siguientes utilizan el comando DBCC y se hacen mediante tu editor de consultas (queries) favorito, por ejemplo Microsoft SQL Server Management Studio.

Para verificar el valor de la semilla ó seed

SQL:
  1. DBCC checkident ('NombreDeTabla')

Resultado:
Checking identity information: current identity value '20', current column value '20'.

Para reparar la semilla ó seed
Si por alguna extraña razón la semilla se corrompe, puedes repararla con el siguiente comando, el cual modificará el valor de la semilla al valor máximo que se encuentre almacenado en la columna Identity.

SQL:
  1. DBCC checkident ('NombreDeTabla', reseed)

Resultado:
Checking identity information: current identity value '20', current column value '20'.

Restablecer la semilla ó seed
Como comentaba al principio, si borraste todos los registros y necesitas reiniciar la semilla en 1, entonces emite el siguiente comando:

SQL:
  1. DBCC checkident ('NombreDeTabla', reseed, 1)

Resultado:
Checking identity information: current identity value '20', current column value '1'.

Listo, el registro siguiente que insertes tendrá un valor Identity de 1.
Puedes modificar el valor 1 a cualquier otro valor que necesites en el ejemplo del último comando.

1 Comentario

Cómo insertar valores en columnas Identity

Si intentas insertar (mediante algún software de sincronización de bases de datos o cualquier otro método) valores explícitos en columnas marcadas como Identity, obtendrás este error:

Cannot insert explicit value for identity column in table 'MiTabla' when IDENTITY_INSERT is set to OFF

Para poder insertar valores específicos en estas columnas, antes de realizar la inserción, corre esta sentencia SQL:

SQL:
  1. SET IDENTITY_INSERT MiTabla ON

Corre tu proceso de sincronización o inserción de datos, y no olvides al finalizar regresar la propiedad a su valor inicial, corriendo esta sentencia:

SQL:
  1. SET IDENTITY_INSERT MiTabla OFF

No hay Comentarios

Cómo restaurar una base de datos de SQL Server en otro servidor

Hace poco tuve que hacer un backup de una base de datos de SQL Server y restaurarla (restore) en otro servidor distinto.

Para hacer el respaldo (backup) en el servidor de origen, usando Microsoft SQL Server Management Studio Express, haces clic con el botón derecho en la base de datos y seleccionas Tasks -> Back Up...

backup.gif

Luego en la pantalla que aparece, seleccionas el tipo de backup llamado Full.

backupoptions2bis2.gif

El archivo de respaldo quedará guardado en la ruta que aparece bajo el titulo Destination.

Ahora descarga ese archivo al servidor donde vas a restaurar la base de datos. Por cierto, ya tiene que existir la base de datos (aunque esté vacía) para que puedas restaurar la información.

Ahora conectado al servidor destino, haz clic en la base de datos donde deseas vaciar la información y haz clic con el botón derecho y selecciona Tasks -> Restore -> Database...

restore.gif

Selecciona la opción From device, haz clic en el botón con los tres puntitos, selecciona el archivo que descargaste y verás esta pantalla (asegúrate de marcar la casilla bajo Restore):

restore3bis.gif

Ahora haz clic en Ok.

Si ves el siguiente error:

Error 3154: The backup set holds a backup of a database other than the existing 'xxxx' database

entonces haz clic en la página Options en el panel izquierdo y marca la casilla Overwrite the existing database:

restore4.gif

Y listo, con eso se restaurarán todos los elementos de tu base de datos original.

Actualización:
Lo que he visto es que el usuario que tenías asignado a la base de datos se corrompe. Simplemente crea otro usuario con un nombre distinto y vuelve a asignarle el ownership y los permisos a la base de datos, y listo.

1 Comentario

Cómo insertar un valor nulo (null) en SQL Server

A veces es necesario insertar un valor nulo (null) en una base de datos de SQL Server usando ASP.NET.

Esto puede ocurrir ya sea en un insert o un update.

Suponiendo que el tipo de datos en la base de datos es un smallint y sabiendo que en ASP.NET corresponde a un tipo de datos Int16, esta es la manera de declarar un entero nulo:

VB.NET:
  1. Dim EnteroNulo As Nullable(Of Int16) = Nothing

Y listo, ahora lo puedes usar en tu DAL o BLL:

VB.NET:
  1. Dim RenglonesAfectados As Integer = Adapter.ModificaTabla(Fecha, EnteroNulo)

No hay Comentarios

Cómo crear las tablas del Membership y Role Provider en SQL Server

Si vas a implementar el Membership Provider de ASP.NET con SQL Server, seguramente encontrarás mucha información en Internet de cómo hacerlo. La parte que no todo mundo explica es cómo crear las tablas que contendrán toda la información de nombres de usuario, contraseñas, roles, etc.

Las tablas se crean mediante la herramienta aspnet_regsql.exe que se encuentra en el directorio de la versión del Framework que estés usando (ejemplo: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727). Si usas la versión 3.5 tienes que usar la herramienta que viene en el fólder de la versión 2.

Abre una ventana de MS-DOS y cámbiate a dicho fólder:

aspnet_regsql.exe

La sintáxis de la herramienta es:

Option Description

-?

Prints Aspnet_regsql.exe Help text in the command window.

-W

Runs the tool in wizard mode. This is the default if no command-line arguments are specified.

-C <connection string>

Specifies the connection string to the computer running SQL Server where the database will be installed, or is already installed. This option is not necessary if you specify only the server (-S) and login (-U and -P, or -E) information.

-S <server>

Specifies the name of the computer running SQL Server where the database will be installed, or is already installed.

-U <login ID>

The SQL Server user ID to log in with. This option also requires the password (-P) option. This option is not necessary if you are authenticating using Windows credentials (-E).

-P <password>

The SQL Server password to log in with. This option also requires the user ID (-U) option. This option is not necessary if you are authenticating using Windows credentials (-E).

-E

Authenticates using the Windows credentials of the currently logged-on user.

-sqlexportlonly <filename>

Generates a SQL script file that can be used to add or remove the specified features. The specified actions are not performed.

 

Option Description

-A all|m|r|p|c|w

Adds support for one or more ASP.NET application services. Service identifiers can be specified together or separately. The following identifiers are used for ASP.NET application services:

all - All services, including common tables and stored procedures shared by the services

m - Membership

r - Role Manager

p - Profile

c - Web Parts Personalization

w - Web Events

-R all|m|r|p|c|w

Removes support for one or more application services. Service identifiers can be specified together or separately. The following identifiers are used for ASP.NET application services:

all - All services, including common tables and stored procedures shared by the services

m - Membership

r - Role Manager

p - Profile

c - Web Parts Personalization

w - Web Events

-Q

Runs the tool in quiet mode and does not confirm before removing an application service.

-d <database>

Specifies the name of the database to create or modify for use with application services. If the database is not specified, the default database name of "aspnetdb" is used.

 

Si necesitas más información, visita esta página.

En un caso sencillo, solamente necesitamos habilitar el Membership provider y el Role provider, por lo que nuestra sintáxis sería:

aspnet_regsql -S servidor\sqlexpress -U usuario -P contrasena -A mr -d nombredelabasededatos

Donde:

-S va seguido del nombre de tu servidor, ya sea en tu red local o en Internet (usa la IP)
-U va seguido de tu nombre de usuario
-P va seguido de tu contraseña
-A va seguido de "mr" ya que queremos habilitar el Membership y Role.
-d va seguido del nombre de tu base de datos

Creando las tablas para el Membership y Role Providers

Listo, ahora solamente verifica que se crearon las tablas correctamente:

Tablas de Membership y Role Provider

Actualización 2008-05-10

Para entender cómo están relacionadas las tablas entre sí, puedes revisar el siguiente diagrama:

Diagrama de tablas del Membership y Role Provider

El siguiente paso sería crear el connectionString en tu archivo web.config, ponlo bajo la sección configuration:

XML:
  1. <connectionStrings>
  2.     <add name="MiConnectionString" connectionString="Data Source=SERVIDOR\SQLEXPRESS;Initial Catalog=nombredelabasededatos;Persist Security Info=True;User ID=usuario;Password=contrasena"
  3.      providerName="System.Data.SqlClient" />
  4.   </connectionStrings>

Y luego, bajo la sección system.web coloca lo siguiente:

XML:
  1. <!--
  2.             The <authentication> section enables configuration
  3.             of the security authentication mode used by
  4.             ASP.NET to identify an incoming user.
  5.         -->
  6.       <authentication mode="Forms">
  7.         <forms loginUrl="~/Default.aspx" name=".ASPXFORMSAUTH" timeout="300"/>
  8.       </authentication>
  9.       <roleManager defaultProvider="MiRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
  10.         <providers>
  11.           <clear/>
  12.           <add name="MiRoleProvider" connectionStringName="MiConnectionString" applicationName="NOMBREAPP" type="System.Web.Security.SqlRoleProvider"/>
  13.         </providers>
  14.       </roleManager>
  15.       <membership defaultProvider="MiMembershipProvider">
  16.         <providers>
  17.           <clear/>
  18.           <add name="MiMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MiConnectionString" applicationName="NOMBREAPP" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Clear"/>
  19.         </providers>
  20.       </membership>

Con esto le indicas a tu aplicación que utilice para la autenticación la base de datos que creaste al inicio.

Ahora, para crear usuarios y roles utiliza la herramienta que viene incluida con Visual Web Developer 2008, haz clic en Website -> ASP.NET Configuration:

aspnetconfiguration.gif

Esto abrirá una ventana de tu navegador y podrás ver la página administrativa en la que puedes crear roles, usuarios y asignar esos usuarios a los roles que desees. Esta página administrativa, para conectarse a la base de datos, utiliza los valores establecidos en el web.config.

herramienta.gif

Ya no explico cómo usar esta herramienta porque es muy sencilla.

Si estás trabajando en un servidor local y creaste algunos roles y usuarios, y tienes que subir esa información al servidor con algún programa de sincronización de bases de datos, hazlo en este orden para evitar errores de integridad referencial:

La siguiente tabla no debe ser sincronizada porque el procedimiento de aspnet_regsql rellena la información necesaria:
aspnet_SchemaVersions

Primera pasada:
aspnet_Applications

Segunda pasada:
aspnet_Users

Tercera pasada:
aspnet_Membership

Cuarta pasada:
aspnet_Roles

Quinta pasada:
aspnet_UsersInRoles

Suerte!

8 Comentarios