I had to do this for NPI (non-public information) reasons at a previous employer. Ended up scrambling fields in a script, since a first name / last name pair isn't NPI unless it's tied to something else.
Here's a rough version of the script. Season to taste. Also, this assumes you have first and last names in separate fields.
CREATE TABLE #RandomData
(
DataID int not null,
ID int not null,
FirstName varchar(50),
LastName varchar(50)
)
INSERT INTO #RandomData (ID, DataID)
SELECT ROW_NUMBER() OVER (ORDER BY NEWID()), DataId FROM DataTable
UPDATE r SET r.FirstName = x.FirstName
FROM #RandomData r
INNER JOIN (
SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ID, FirstName FROM DataTable
) x
ON x.ID = r.ID
UPDATE r SET r.LastName = x.LastName
FROM #RandomData r
INNER JOIN (
SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ID, LastName FROM DataTable
) x
ON x.ID = r.ID
CREATE CLUSTERED INDEX PK_RandomData ON #RandomData
(
DataID asc
)
ALTER TABLE DataTable DISABLE TRIGGER ALL
UPDATE dt
SET dt.FirstName = r.FirstName,
dt.LastName = r.LastName
FROM DataTable dt
INNER JOIN #RandomData r
ON dt.DataId = r.DataId
ALTER TABLE DataTable ENABLE TRIGGER ALL
DROP TABLE #RandomData