RSS

Blog

Remove html tags from text with SQL

By Sharita Farhana

The following function will remove all tags - html and xml.  All you have to do is provide the text in the value parameter.  

 

 
CREATE FUNCTION [DBO].[StripHTML] (
@VALUE NVARCHAR(MAX)
 
)

RETURNS NVARCHAR(MAX)
AS
BEGIN
SET @value=REPLACE(@VALUE,' ','')
DECLARE @start INT,@end int,@remove varchar(max)
SET @start=CHARINDEX('<',TRIM(@VALUE))
WHILE @start>0
BEGIN
SET @end=CHARINDEX('>',@VALUE)
IF @start > 1
BEGIN
DECLARE @Len INT = @end+1-@Start
SET @remove=SUBSTRING(@VALUE,@start,@Len)
END
ELSE BEGIN
SET @remove=SUBSTRING(@VALUE,@start,@end)
END
SET @remove = TRIM(@Remove)

SET @value=REPLACE(@VALUE,@remove,'')
SET @start=CHARINDEX('<',TRIM(@VALUE))
END
 
RETURN @VALUE
END
GO
 
Run script on all databases

Written By Sharita Farhana

 

Want to run a script in all databases in your server? Here is a quick stored procedure to do that.  Here is a sample stored procedure call. 

 

EXEC RunScript 'SELECT TOP 1 * FROM abc'

 

 

 

CREATE PROCEDURE [dbo].[RunScript]

        @Script NVARCHAR(MAX)

AS

BEGIN

 

SET NOCOUNT ON

SET XACT_ABORT ON

 

BEGIN TRY

       BEGIN TRANSACTION;

 

              IF OBJECT_ID('tempdb.[dbo].[#DBName]'IS NOT NULL DROP TABLE tempdb.[dbo].[#DBName]      

               

              -- Create a temp table to house the database names

              SELECT

                     [Name] as DBName,

                     ROW_NUMBER()OVER(PARTITIONBY 1 ORDERBYname) AS RowNum

              INTO #DBName

              FROM

                     sys.databases

              WHERE

                     [Name] NOT IN ('master','model','msdb','ReportServer','ReportServerTempDB','tempdb')

 

              ORDER BY [Name]

             

             

              DECLARE      @Db AS VARCHAR(50),

                           @I AS INT= 1,

                           @Exec AS NVARCHAR(MAX),

                           @Sql AS NVARCHAR(MAX)

 

                     WHILE( @i <=(SELECT MAX(RowNumFROM #DBName))

                     BEGIN

 

                           SET @DB =(SELECT DBName FROM #DBName WHERE RowNum= @i);

                           SET @Exec =QUOTENAME(@Db)+N'.sys.sp_executesql';

                           SET @Sql =  N'PRINT ''Running script on ''+ DB_NAME();'+ @Script   

 

                           --SELECT @Script

                           EXEC @Exec @Sql;          

                           SET @I=@I+1  

                     END

       DROP TABLE #DBName

COMMIT TRANSACTION;

  END TRY

   BEGIN CATCH

       IF @@TRANCOUNT> 0

           ROLLBACK TRANSACTION;

       THROW;

   END CATCH;

 

END

 

 

Find All users and their roles/permissions in Sql server

 

 

 

By Sharita Farhana

The following query iterates through all databases and produce a list of users, create and modified date and their roles.

 

DROPTABLEIFEXISTS #Users;

 

CREATETABLE #Users

(

   DBName VARCHAR(100)

  ,UserName   VARCHAR(500)

  ,Create_DateDATETIME

  ,Modify_DateDATETIME

  ,Type       VARCHAR(500)

  ,Authentication_TypeVARCHAR(500)

  ,[Permission_Role_Name] VARCHAR(500)

);

 

 

DECLARE @dbname NVARCHAR(255), @sql NVARCHAR(max)

 

DECLARE c CURSORFORWARD_ONLYREAD_ONLYFOR

SELECT [name]

FROM

sys.databases

WHERE database_id > 4;

 

OPEN c

FETCHNEXTFROM c INTO @dbname ;

 

WHILE@@fetch_status= 0

BEGIN

    set @sql =

    'use ['+@dbname+']

    INSERT INTO  #Users

SELECT DB_NAME() as DBName,

          p.name AS username,

          p.create_date,

          p.modify_date,

          p.type_desc AS type,

          p.authentication_type_desc AS authentication_type,

          pe.name AS [Permission_Role_Name]

FROM

 sys.database_principals ASp

INNER JOIN sys.sysusers    AS u

ON P.NAME=U.name

LEFT OUTER JOIN      sys.database_role_members AS rm

ON rm.member_principal_id=p.principal_id

LEFT OUTER JOIN      sys.database_principals    AS pe

ON pe.principal_id=rm.role_principal_id

WHERE

         p.type NOT IN(''A'',

                                  ''G'',

                                  ''R'',

                                  ''X'')

         AND p.sid   IS NOT NULL

         AND p.name NOT IN(''public'',

                                         ''dbo'',

                                         ''guest'',

                                         ''INFORMATION_SCHEMA'',

                                         ''sys'',

                                         ''db_owner'',

                                         ''db_accessadmin'',

                                         ''db_securityadmin'',

                                         ''db_ddladmin'',

                                         ''db_backupoperator'',

                                         ''db_datareader'',

                                         ''db_datawriter'',

                                         ''db_denydatareader'',

                                         ''db_denydatawriter'')

ORDER BY

               UserName;'

    EXEC (@sql);

    FETCHNEXTFROM c INTO @dbname;

END

CLOSE C

DEALLOCATE c

 

SELECT

 

*

FROM

#Users

--WHERE

--Permission_Role_Name IS NOT NULL

ORDERBY

UserName,dbName

XlsxToDelimited How To's
XlsxToDelimited
Extracting variable values from a file name in SSIS
Extracting variable values from a file name in SSIS
Converting Float to DateTime in SSIS
Converting Float to DateTime in SSIS
Updating field size in a table
Updating field size in a table
Correcting the “Could not obtain information about Windows NT group/user 'MyDomain\UserName', error code 0x5” error when trying to send an email using sp_send_dbEmail
Correcting the “Could not obtain information about Windows NT group/user 'MyDomain\UserName', error code 0x5” error when trying to send an email using sp_send_dbEmail
Survey Pattern Recognition with SQL
Survey Pattern Recognition with SQL
SSRS Crosstab pattern to create a report with multiple visual types
SSRS Crosstab pattern to create a report with multiple visual types