declare @dt datetime
select @dt = getdate()-4
--select @dt
IF OBJECT_ID('tempdb..#audit') IS NOT NULL DROP TABLE #audit;
IF OBJECT_ID('tempdb..#attribute') IS NOT NULL DROP TABLE #attribute;
IF OBJECT_ID('tempdb..#value') IS NOT NULL DROP TABLE #value;
CREATE TABLE #audit(
[id] [bigint] IDENTITY(1,1) NOT NULL,
objectid uniqueidentifier,
objectTypeCode int,
attributemask nvarchar(max),
changedata nvarchar(max),
operation int,
changedOn datetime,
changedBy nvarchar(200)
)
CREATE TABLE #attribute(
[id] [bigint] IDENTITY(1,1) NOT NULL,
objectid uniqueidentifier,
objectTypeCode int,
atribute int,
operation int,
changedOn datetime,
changedBy nvarchar(200)
)
CREATE TABLE #value(
[id] [bigint] IDENTITY(1,1) NOT NULL,
objectid uniqueidentifier,
objectTypeCode int,
value nvarchar(max)
)
INSERT INTO #audit(objectid,attributemask,changedata, objectTypeCode, operation, changedOn, changedBy)
select
objectid ,substring(attributemask,2,len(attributemask)-2) AttributeMask,ChangeData, objectTypeCode, Operation, CreatedOn, UserIdName
from Audit a
WHERE
a.operation in (1,2)
AND a.Action in (1,2)
AND a.ObjectTypeCode = 2
and a.CreatedOn >= @dt
--and a.useridname = 'sa_CRM_Delta, sa_CRM_Delta'
AND a.ChangeData!=''
declare @rowNum bigint
DECLARE @objectid uniqueidentifier
declare @attributemask nvarchar(max)
declare @changedata nvarchar(max)
DECLARE @auxAtrib xml
DECLARE @auxVals xml
declare @objectTypeCode int
declare @operation int
declare @changedOn datetime
declare @changedBy nvarchar(200)
declare @splitAttrib char(1)
set @splitAttrib = ','
declare @splitVals char(1)
set @splitVals = '~'
DECLARE audit_cursor CURSOR FOR
SELECT id,objectid,attributemask,changedata, objectTypeCode,operation, changedOn, changedBy
FROM #audit
open audit_cursor
FETCH NEXT FROM audit_cursor
INTO @rowNum,@objectid,@attributemask,@changedata, @objectTypeCode,@operation,@changedOn,@changedBy
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @auxAtrib = CONVERT(xml,' <root> <s>' + REPLACE(@attributemask,@splitAttrib,'</s> <s>') + '</s> </root> ')
SELECT @auxVals = CONVERT(xml,' <root> <s>' + REPLACE( replace(@changedata,'&','&') ,@splitVals,'</s> <s>') + '</s> </root> ')
INSERT INTO #attribute(objectid, objectTypeCode , atribute,operation,changedOn,changedBy)
SELECT @objectid id, @objectTypeCode, atrib = T.c.value('.','varchar(20)') , @operation, @changedOn, @changedBy
FROM @auxAtrib.nodes('/root/s') T(c)
INSERT INTO #value(objectid, objectTypeCode, value)
SELECT @objectid id, @objectTypeCode, val = T.c.value('.','varchar(20)')
FROM @auxVals.nodes('/root/s') T(c)
FETCH NEXT FROM audit_cursor
INTO @rowNum,@objectid,@attributemask,@changedata, @objectTypeCode,@operation,@changedOn,@changedBy
END
CLOSE audit_cursor;
DEALLOCATE audit_cursor;
--truncate table StagingDB.dbo.Audit
--INSERT INTO StagingDB.dbo.Audit
SELECT
--v.objectid
--,v.value
--,a.atribute
CASE a.operation
WHEN 1 then 'Create'
WHEN 2 then 'Update'
END operation
,a.changedOn
,cast(a.changedOn as date) changedOn_date
,a.changedBy
,at.Name
,c.hb_ConsumerId
,c.Address1_Country
FROM #value v
INNER JOIN #attribute a
ON v.id = a.id
INNER JOIN Row2015_MSCRM.dbo.Contact c
ON v.objectid = c.ContactId and c.statecode=0
INNER JOIN (
SELECT DISTINCT ar.name, ar.ColumnNumber
FROM MetadataSchema.Attribute ar INNER JOIN
MetadataSchema.Entity en ON ar.EntityId = en.EntityId
WHERE en.ObjectTypeCode=2 ) at
ON a.atribute = at.ColumnNumber
IF OBJECT_ID('tempdb..#audit') IS NOT NULL DROP TABLE #audit;
IF OBJECT_ID('tempdb..#attribute') IS NOT NULL DROP TABLE #attribute;
IF OBJECT_ID('tempdb..#value') IS NOT NULL DROP TABLE #value;
marți, 26 aprilie 2016
marți, 26 ianuarie 2016
Script to delete CRM Users in CRM 2015
USE YourCrm_MSCRM
BEGIN TRANSACTION
DECLARE @username AS VARCHAR(50)
-- CHANGE THIS --
SET @username = 'yourDomain\yourUser'
DECLARE @userId AS UNIQUEIDENTIFIER
SET @userId = (SELECT SystemUserId FROM dbo.SystemUserBase WHERE DomainName = @username)
DECLARE @orgid AS UNIQUEIDENTIFIER
SET @orgid = (SELECT OrganizationId FROM dbo.SystemUserBase WHERE systemuserid = @userid)
DECLARE @userEmail AS VARCHAR(MAX)
SET @useremail = (SELECT InternalEMailAddress FROM dbo.SystemUserBase WHERE SystemUserId = @userid)
DECLARE @userfullname AS VARCHAR(max)
SET @userfullname = (SELECT fullname FROM dbo.systemuserbase WHERE systemuserid = @userid)
DECLARE @queueid AS UNIQUEIDENTIFIER
SET @queueid = (SELECT queueid FROM dbo.SystemUserBase WHERE SystemUserId = @userid)
DECLARE @ownerid AS UNIQUEIDENTIFIER
SET @ownerid = (SELECT ownerid FROM dbo.OwnerBase WHERE name = @userfullname)
DELETE FROM dbo.UserSettingsBase WHERE SystemUserId = @userId
DELETE FROM dbo.TeamMembership WHERE SystemUserId = @userId
DELETE FROM dbo.SystemUserPrincipals WHERE systemuserid = @userId
DELETE FROM dbo.SystemUserRoles WHERE systemuserid = @userId
DELETE FROM dbo.QueueMembership where systemuserid = @userId
DELETE FROM dbo.MailboxBase where ownerid = @userid
DELETE FROM dbo.SystemUserBusinessUnitEntityMap WHERE systemuserid = @userid
DELETE FROM dbo.SystemUserBase WHERE SystemUserId = @userid
DELETE FROM dbo.QueueBase WHERE QueueId = @queueid
DELETE FROM dbo.PrincipalEntityMap WHERE PrincipalId = @ownerid
DELETE FROM dbo.PrincipalObjectAccess WHERE principalid = @ownerid
DELETE FROM dbo.OwnerBase WHERE ownerid = @ownerid
DELETE FROM dbo.EmailSearchBase WHERE EmailAddress = @userEmail
DELETE FROM dbo.ResourceBase WHERE name = @userfullname
DELETE FROM dbo.CalendarRuleBase WHERE CalendarId IN (SELECT CalendarId FROM dbo.CalendarBase WHERE PrimaryUserId = @userid)
DELETE FROM dbo.CalendarBase WHERE primaryuserid = @userId
DELETE FROM dbo.InternalAddressBase WHERE parentid = @userId
DELETE FROM mscrm_config..SystemUserOrganizations WHERE CrmUserId = @userid AND OrganizationId = @orgid
COMMIT
BEGIN TRANSACTION
DECLARE @username AS VARCHAR(50)
-- CHANGE THIS --
SET @username = 'yourDomain\yourUser'
DECLARE @userId AS UNIQUEIDENTIFIER
SET @userId = (SELECT SystemUserId FROM dbo.SystemUserBase WHERE DomainName = @username)
DECLARE @orgid AS UNIQUEIDENTIFIER
SET @orgid = (SELECT OrganizationId FROM dbo.SystemUserBase WHERE systemuserid = @userid)
DECLARE @userEmail AS VARCHAR(MAX)
SET @useremail = (SELECT InternalEMailAddress FROM dbo.SystemUserBase WHERE SystemUserId = @userid)
DECLARE @userfullname AS VARCHAR(max)
SET @userfullname = (SELECT fullname FROM dbo.systemuserbase WHERE systemuserid = @userid)
DECLARE @queueid AS UNIQUEIDENTIFIER
SET @queueid = (SELECT queueid FROM dbo.SystemUserBase WHERE SystemUserId = @userid)
DECLARE @ownerid AS UNIQUEIDENTIFIER
SET @ownerid = (SELECT ownerid FROM dbo.OwnerBase WHERE name = @userfullname)
DELETE FROM dbo.UserSettingsBase WHERE SystemUserId = @userId
DELETE FROM dbo.TeamMembership WHERE SystemUserId = @userId
DELETE FROM dbo.SystemUserPrincipals WHERE systemuserid = @userId
DELETE FROM dbo.SystemUserRoles WHERE systemuserid = @userId
DELETE FROM dbo.QueueMembership where systemuserid = @userId
DELETE FROM dbo.MailboxBase where ownerid = @userid
DELETE FROM dbo.SystemUserBusinessUnitEntityMap WHERE systemuserid = @userid
DELETE FROM dbo.SystemUserBase WHERE SystemUserId = @userid
DELETE FROM dbo.QueueBase WHERE QueueId = @queueid
DELETE FROM dbo.PrincipalEntityMap WHERE PrincipalId = @ownerid
DELETE FROM dbo.PrincipalObjectAccess WHERE principalid = @ownerid
DELETE FROM dbo.OwnerBase WHERE ownerid = @ownerid
DELETE FROM dbo.EmailSearchBase WHERE EmailAddress = @userEmail
DELETE FROM dbo.ResourceBase WHERE name = @userfullname
DELETE FROM dbo.CalendarRuleBase WHERE CalendarId IN (SELECT CalendarId FROM dbo.CalendarBase WHERE PrimaryUserId = @userid)
DELETE FROM dbo.CalendarBase WHERE primaryuserid = @userId
DELETE FROM dbo.InternalAddressBase WHERE parentid = @userId
DELETE FROM mscrm_config..SystemUserOrganizations WHERE CrmUserId = @userid AND OrganizationId = @orgid
COMMIT
luni, 14 decembrie 2015
joi, 10 decembrie 2015
marți, 1 septembrie 2015
vineri, 7 august 2015
marți, 7 iulie 2015
The SELECT permission was denied on the object 'EntityView', database 'Fashion_MSCRM', schema 'dbo'.
Sometimes, when you create or import a new CRM Organization, the new CRM Organization does not work..
If you take a look in Event Viewer, you will see a message like : The SELECT permission was denied on the object 'EntityView', database 'Fashion_MSCRM', schema 'dbo'.
For this, you can give explicit permissions on that object :
GRANT SELECT ON dbo.EntityView
TO [CRMReaderRole]
GO
Or, if you give that permission, and its still requires more permissions, for other objects, you can do it like :
EXEC sp_addrolemember N'db_owner', N'CRMReaderRole'
GO
If you take a look in Event Viewer, you will see a message like : The SELECT permission was denied on the object 'EntityView', database 'Fashion_MSCRM', schema 'dbo'.
For this, you can give explicit permissions on that object :
GRANT SELECT ON dbo.EntityView
TO [CRMReaderRole]
GO
Or, if you give that permission, and its still requires more permissions, for other objects, you can do it like :
EXEC sp_addrolemember N'db_owner', N'CRMReaderRole'
GO
Abonați-vă la:
Postări (Atom)