Very subtle differences. Did is past simple, while have is called perfect tense. Both sentences are grammatically correct. Note that use of the past tense refers to a single, known occurrence, while use of the perfect tense refers to one of more occurrences at unknown or unspecified times in the past. I.e., I did go to New York. (a one time past occurence) vs I have been to NewYork. (a past occurrence that could be one or many times)