Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

LLamada a un Web Service de creación de usuarios de SharePoint a través de un ensamblado de SQL Server

Como es sabido, SQL Server 2008/2005 permite integración de ensamblados de .NET para interactuar entre otras, con fuentes externas.
 
Pues bién, esta entrada va a tratar la problematica de la creación de usuarios de SharePoint con autentificación por FBA. El motivo es simplemente que cuando queremos importar las tablas de usuario de ASP.NET desde una fuente externa, no podemos insertar los datos completos del usuario, esto únicamente se puede hacer desde SharePoint.

Manos a la obra, en primer lugar hemos de crear Web Service para la creación del usuario en SharePoint del siguiente estilo:
 
[WebMethod]
public void CreateUser(string Site, string UserProvider,string UserId, string UserName) 
{
	SPSecurity.RunWithElevatedPrivileges(delegate()
	   {
		   using (SPSite site = new SPSite(Site))
		   {
			   SPWeb web = site.RootWeb;
			   web.AllUsers.Add(UserProvider + "|" + UserId, "", UserName, "");
			   web.EnsureUser(UserProvider + "|" + UserId);
		   }
	   });
			
}
Una vez creado, hemos de crear un proxy del WebService a través de la utilidad WSDL.EXE (lo podéis encontrar en C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64)
La llamada será del estilo:
 
WSDL.exe /o MyServiceProxy.cs /n Trentia.SPUsers http://<URLdelWebService>
 
Con la clase resultante ya podemos insertarla en nuestro proyecto de biblioteca de clases de SQL Server.

El siguiente paso, es crear nuestra clase que será invocada a través de SQL:
 
[SqlProcedure]
public static void GetMessage(SqlString WSUrl, SqlString SiteURL, SqlString UserProvider, SqlString UserID, SqlString UserName
   , out SqlString strMessge)
{

	try
	{
		Service1 svc = new Service1();
		svc.Url = WSUrl.ToString();
		//svc.Credentials = CredentialCache.DefaultCredentials;
		// call web service method; return as a DataTable
		svc.CreateUser(SiteURL.ToString(), UserProvider.ToString(), UserID.ToString(), UserName.ToString());

		strMessge = "OK";
	}
	catch (Exception ex)
	{
		strMessge = ex.ToString();
	}
}
En algunas ocasiones, sobre todo cuando intentamos acceder a WebServices e intercambiar datos, hemos de generar una clases serializable del ensamblado.
Para ello, hemos de ejecutar otra utilidad llamada SGEN.exe ubicada también en C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64
La ejecución es la siguiente:

SGEN.exe /a: <RutaYEnsambladoDLL> /compiler:keyfile:<RutaYFicheroSNK>
 
Con el ensamblado generado por el Visual Studio y el ensamblado generado con la utilidad SGEN.exe, ya tenemos todo lo suficiente para realizar las llamadas a través del SQL Server.
 
Desde el SQL Server, en primer lugar hemos de habilitar una seria de parámetros en nuestra BBDD
 
sp_configure 'clr enabled', 1
GO
reconfigure
GO

ALTER DATABASE [DATABASENAME]
SET TRUSTWORTHY ON
GO

CREATE ASSEMBLY MSSQLTipsCLRLib 
FROM 'c:\Trentia.SQLAssemblySharePointUsers.dll'
WITH PERMISSION_SET = UNSAFE /* SI DA ERROR: EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false **/

CREATE ASSEMBLY [MSSQLTipsCLRLib.XmlSerializers]
FROM 'c:\Trentia.SQLAssemblySharePointUsers.XmlSerializers.dll'
WITH PERMISSION_SET = SAFE
 
Una vez tenemos los ensamblados cargados únicamente nos queda crear un PROCEDURE que será quien invoque el ensamblado.
Para ello:
 
CREATE PROCEDURE [dbo].[AddSPUser]

   @WSUrl NVARCHAR(200),
   @SiteURL NVARCHAR(200),
   @UserProvider NVARCHAR(200),
   @UserID NVARCHAR(200),
   @UserName NVARCHAR(200),
   @strMessge NVARCHAR(400) OUT
  

WITH EXECUTE AS CALLER
AS
EXTERNAL NAME MSSQLTipsCLRLib.SPCreateUserProfileSharePoint.GetMessage
GO

EXEC DBO.AddSPUser 'http:///_vti_bin/SPUser.asmx','HTTP:///','i:0#.f|proveedoraspnet','1019','juanito',''
Autor: Javier Tirado Pampín
Publicado: 31/03/2011  9:58 | 0  Comentarios | 0  Enlaces a este post

Recursividad en procedimientos almacenados (SQLServer)

Cuando se intentan crear procedimientos almacenados con SQLServer en caso de que existan cursores en el procedimiento en cuestión, aparecerá un error que indicará que el CURSOR XXX está abierto y que no es posible abrirlo nuevamente.
Este error se debe a que los cursores son globales a nivel de base de datos, la forma de solucionarlo es ir a Propiedades de la base de datos, sección Opciones y modificar el valor del Cursor predeterminado (Default cursor) de GLOBAL a LOCAL, con esta acción ya no aparecerá el problema en la recusividad con cursores.
Autor: David Acosta Lesmes
Publicado: 17/11/2010  10:26 | 0  Comentarios | 0  Enlaces a este post

Microsoft Business Intelligence Indexing Connector para SharePoint 2010

Microsoft acaba de liberar Microsoft Business Intelligence Indexing Connector.

Es un conector que permite realizar búsquedas de información sobre documentos de BI como podrían ser informes de SQL Reporting, Excel, ...

A través de este conector podríamos por ejemplo, realizar búsquedas de información a través de dimensiones.


Descargar Microsoft Business Intelligence Indexing Connector
Autor: Javier Tirado Pampín
Publicado: 07/06/2010  18:13 | 0  Comentarios | 0  Enlaces a este post


Máquina virtual disponible con las versiones 2010 de Microsoft

Microsoft, acaba de liberar una máquina virtual (Hyper-V) para poder testar todas las versiones 2010 de Microsoft (Office 2010, Sharepoint 2010,SQL Server 2008 R2, Visual Studio 2010,Visio 2010,Office Web Application, Fast Search Sharepoint 2010 y Project Server 2010).

Los requerimientos son Windows Server 2008 con soporte Hyper-V, 8Gb de RAM y 50Gb de espacio en disco.

La descarga ocupa 18Gb y la podemos descargar desde aquí.

Bon apetit !!
Autor: Javier Tirado Pampín
Publicado: 13/05/2010  9:41 | 0  Comentarios | 0  Enlaces a este post

Introducció a Microsoft SQL Server 2008 R2

Microsoft nos ofrece un extenso ebook de 216 páginas en formato PDF o XPS dónde se tratan las novedades de la Release 2 de SQL Server 2008. Aquí tenéis una relación de los capítulos cubiertos:

PART I Database Administration

CHAPTER 1 SQL Server 2008 R2 Editions and Enhancements

CHAPTER 2 Multi-Server Administration

CHAPTER 3 Data-Tier Applications

CHAPTER 4 High Availability and Virtualization Enhancements

CHAPTER 5 Consolidation and Monitoring

 

PART II Business Intelligence Development

CHAPTER 6 Scalable Data Warehousing

CHAPTER 7 Master Data Services

CHAPTER 8 Complex Event Processing with StreamInsight

CHAPTER 9 Reporting Services Enhancements

CHAPTER 10 Self-Service Analysis with PowerPivot

 

Vía: http://blogs.msdn.com/microsoft_press/archive/2010/04/14/free-ebook-introducing-microsoft-sql-server-2008-r2.aspx

Autor: Rubén Claramunt Vicente
Publicado: 22/04/2010  18:11 | 0  Comentarios | 0  Enlaces a este post

CTP de Report Builder 3.0

En noviembre de 2009 Microsoft nos deleita con la CTP (Community Technology Preview) de su herramienta de "usuario" para la creación de informes, Report Builder, en su versión 3.0. Esta nueva versión viene con novedades importantes relacionadas a nuevas funcionalidades de SQL Server 2008 y Sharepoint, como las ReportParts (trozos reutilizables de informes, la posibilidad de disponer las listas de Sharepoint como origen de datos (SharePoint List Data Extension), la posibilidad de representar datos geoespaciales sobre un mapa dentro del informe, etc.

Podeies ver una lista completa de las novedades en http://technet.microsoft.com/en-us/library/ee633667(SQL.105).aspx

Autor: Rubén Claramunt Vicente
Publicado: 18/03/2010  12:32 | 0  Comentarios | 0  Enlaces a este post